Spec-Zone.ru › Web APIs

WebGLProgram

Базовая Широко доступная *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

* Некоторые части этой функции могут иметь различный уровень поддержки.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Потоках веб-работы.

WebGLProgram является частью API WebGL и представляет собой комбинацию двух скомпилированных WebGLShader, состоящих из шейдера вершин и шейдера фрагментов (оба написаны на GLSL).

WebGLObject WebGLProgram

Для создания WebGLProgram, вызовите функцию createProgram() контекста GL. После присоединения программ шейдеров с помощью attachShader(), их связывают в рабочую программу. Это показано в коде ниже.

const program = gl.createProgram();

// Attach pre-existing shaders
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);

gl.linkProgram(program);

if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
  const info = gl.getProgramInfoLog(program);
  throw `Could not compile WebGL program. \n\n${info}`;
}

См. WebGLShader для получения информации о создании vertexShader и fragmentShader в приведенном выше примере.

Примеры

Использование программы

Шаги для фактической работы с программой включают указание графическому процессору использовать программу, привязку соответствующих данных и параметров конфигурации, а затем вывод чего-либо на экран.

// Use the program
gl.useProgram(program);

// Bind existing attribute data
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.enableVertexAttribArray(attributeLocation);
gl.vertexAttribPointer(attributeLocation, 3, gl.FLOAT, false, 0, 0);

// Draw a single triangle
gl.drawArrays(gl.TRIANGLES, 0, 3);

Удаление программы

Если при связывании программы возникла ошибка или вы хотите удалить существующую программу, достаточно выполнить WebGLRenderingContext.deleteProgram(). Это освобождает память связанной программы.

gl.deleteProgram(program);

Спецификации

Спецификация
Спецификация WebGL
# 5.6

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
WebGLProgram 10 12 4 12 5.1 25 4 12 8 1.5 4.4
worker_support Нет Нет 105 Нет Нет Нет 105 Нет Нет Нет Нет

См. также

  • WebGLShader
  • WebGLRenderingContext.attachShader()
  • WebGLRenderingContext.compileShader()
  • WebGLRenderingContext.createProgram()
  • WebGLRenderingContext.createShader()
  • WebGLRenderingContext.deleteProgram()
  • WebGLRenderingContext.deleteShader()
  • WebGLRenderingContext.detachShader()
  • WebGLRenderingContext.getAttachedShaders()
  • WebGLRenderingContext.getProgramParameter()
  • WebGLRenderingContext.getProgramInfoLog()
  • WebGLRenderingContext.getShaderParameter()
  • WebGLRenderingContext.getShaderPrecisionFormat()
  • WebGLRenderingContext.getShaderInfoLog()
  • WebGLRenderingContext.getShaderSource()
  • WebGLRenderingContext.isProgram()
  • WebGLRenderingContext.isShader()
  • WebGLRenderingContext.linkProgram()
  • WebGLRenderingContext.shaderSource()
  • WebGLRenderingContext.useProgram()
  • WebGLRenderingContext.validateProgram()

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebGLProgram

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API