--- title: WebGLProgram slug: Web/API/WebGLProgram translation_of: Web/API/WebGLProgram --- <div>{{APIRef("WebGL")}}</div> <p><strong>WebGLProgram</strong> это часть <a href="/en-US/docs/Web/API/WebGL_API">WebGL API</a> и комбинация двух составляющих {{domxref("WebGLShader")}}-ов, состоящих из вертикального и фрагментного шейдеров (оба написаны на GLSL). Затем они связываются в готовую к использованию программу.</p> <pre class="brush: js">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; } </pre> <p>Смотрите {{domxref("WebGLShader")}} для информации о том, как создать <code>vertexShader</code> и <code>fragmentShader</code> в примере выше.</p> <h2 id="Примеры">Примеры</h2> <h3 id="Использование_программы">Использование программы</h3> <p>Шаги для того, чтобы сделать какую-то работу с программой, включают сообщение GPU об использовании программы, связывание соответствующих данных и параметров конфигурации и наконец отрисовку чего-то на экране.</p> <pre class="brush: js">// Использование программы 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); </pre> <h3 id="Удаление_программы">Удаление программы</h3> <p>Если существует ошибка связывания программы или вы хотите удалить существующую программу, тогда это так же просто, как запустить {{domxref("WebGLRenderingContext.deleteProgram()")}}. Это освободит память от связанной программы.</p> <pre class="brush: js">gl.deleteProgram(program); </pre> <h2 id="Спецификация">Спецификация</h2> <table class="standard-table"> <tbody> <tr> <th scope="col">Specification</th> <th scope="col">Status</th> <th scope="col">Comment</th> </tr> <tr> <td>{{SpecName('WebGL', "#5.6", "WebGLProgram")}}</td> <td>{{Spec2('WebGL')}}</td> <td>Initial definition.</td> </tr> </tbody> </table> <h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> <p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> <p>{{Compat("api/WebGLProgram", "WebGLProgram")}}</p> <h2 id="Смотрите_также">Смотрите также</h2> <ul> <li>{{domxref("WebGLShader")}}</li> <li>{{domxref("WebGLRenderingContext.attachShader()")}}</li> <li>{{domxref("WebGLRenderingContext.compileShader()")}}</li> <li>{{domxref("WebGLRenderingContext.createProgram()")}}</li> <li>{{domxref("WebGLRenderingContext.createShader()")}}</li> <li>{{domxref("WebGLRenderingContext.deleteProgram()")}}</li> <li>{{domxref("WebGLRenderingContext.deleteShader()")}}</li> <li>{{domxref("WebGLRenderingContext.detachShader()")}}</li> <li>{{domxref("WebGLRenderingContext.getAttachedShaders()")}}</li> <li>{{domxref("WebGLRenderingContext.getProgramParameter()")}}</li> <li>{{domxref("WebGLRenderingContext.getProgramInfoLog()")}}</li> <li>{{domxref("WebGLRenderingContext.getShaderParameter()")}}</li> <li>{{domxref("WebGLRenderingContext.getShaderPrecisionFormat()")}}</li> <li>{{domxref("WebGLRenderingContext.getShaderInfoLog()")}}</li> <li>{{domxref("WebGLRenderingContext.getShaderSource()")}}</li> <li>{{domxref("WebGLRenderingContext.isProgram()")}}</li> <li>{{domxref("WebGLRenderingContext.isShader()")}}</li> <li>{{domxref("WebGLRenderingContext.linkProgram()")}}</li> <li>{{domxref("WebGLRenderingContext.shaderSource()")}}</li> <li>{{domxref("WebGLRenderingContext.useProgram()")}}</li> <li>{{domxref("WebGLRenderingContext.validateProgram()")}}</li> </ul>