From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- files/ru/web/api/webglprogram/index.html | 98 ++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 files/ru/web/api/webglprogram/index.html (limited to 'files/ru/web/api/webglprogram') diff --git a/files/ru/web/api/webglprogram/index.html b/files/ru/web/api/webglprogram/index.html new file mode 100644 index 0000000000..30a772e8ef --- /dev/null +++ b/files/ru/web/api/webglprogram/index.html @@ -0,0 +1,98 @@ +--- +title: WebGLProgram +slug: Web/API/WebGLProgram +translation_of: Web/API/WebGLProgram +--- +
{{APIRef("WebGL")}}
+ +

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);
+
+ +

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

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('WebGL', "#5.6", "WebGLProgram")}}{{Spec2('WebGL')}}Initial definition.
+ +

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

+ + + +

{{Compat("api/WebGLProgram", "WebGLProgram")}}

+ +

Смотри так же

+ + -- cgit v1.2.3-54-g00ecf