WebGLProgram
Базовая Широко доступная *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Примечание: Эта функция доступна в Потоках веб-работы.
WebGLProgram является частью API WebGL и представляет собой комбинацию двух скомпилированных WebGLShader, состоящих из шейдера вершин и шейдера фрагментов (оба написаны на GLSL).
Для создания 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 | Нет | Нет | Нет | Нет |
См. также
WebGLShaderWebGLRenderingContext.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