--- title: WebGLProgram slug: Web/API/WebGLProgram translation_of: Web/API/WebGLProgram ---
WebGLProgram это часть WebGL API и комбинация двух составляющих {{domxref("WebGLShader")}}-ов, состоящих из вертикального и фрагментного шейдеров (оба написаны на GLSL). Затем они связываются в готовую к использованию программу.
var program = gl.createProgram(); // Прикрепление уже существующих шейдеров gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); if ( !gl.getProgramParameter( program, gl.LINK_STATUS) ) { var info = gl.getProgramInfoLog(program); throw "Could not compile WebGL program. \n\n" + info; }
Смотрите {{domxref("WebGLShader")}} для информации о том, как создать vertexShader
и fragmentShader
в примере выше.
Шаги для того, чтобы сделать какую-то работу с программой, включают сообщение GPU об использовании программы, связывание соответствующих данных и параметров конфигурации и наконец отрисовку чего-то на экране.
// Использование программы gl.useProgram(program); // Связывание существующих аттрибутов данных gl.bindBuffer(gl.ARRAY_BUFFER, buffer); gl.enableVertexAttribArray(attributeLocation); gl.vertexAttribPointer(attributeLocation, 3, gl.FLOAT, false, 0, 0); // Отрисовка простого треугольника gl.drawArrays(gl.TRIANGLES, 0, 3);
Если существует ошибка связывания программы или вы хотите удалить существующую программу, тогда это так же просто, как запустить {{domxref("WebGLRenderingContext.deleteProgram()")}}. Это освободит память от связанной программы.
gl.deleteProgram(program);
Specification | Status | Comment |
---|---|---|
{{SpecName('WebGL', "#5.6", "WebGLProgram")}} | {{Spec2('WebGL')}} | Initial definition. |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("api/WebGLProgram", "WebGLProgram")}}