Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
WebGLProgram
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist inWeb Workers verfügbar.
DasWebGLProgram ist Teil derWebGL API und ist eine Kombination aus zwei kompiliertenWebGLShader, bestehend aus einem Vertex-Shader und einem Fragment-Shader (beide in GLSL geschrieben).
Um einWebGLProgram zu erstellen, rufen Sie die FunktioncreateProgram() des GL-Kontextes auf. Nachdem Sie die Shader-Programme mitattachShader() angehängt haben, verlinken Sie diese zu einem nutzbaren Programm. Dies wird im untenstehenden Code gezeigt.
const program = gl.createProgram();// Attach pre-existing shadersgl.attachShader(program, vertexShader);gl.attachShader(program, fragmentShader);gl.linkProgram(program);if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { const info = gl.getProgramInfoLog(program); throw new Error(`Could not compile WebGL program. \n\n${info}`);}SieheWebGLShader für Informationen zur Erstellung desvertexShader undfragmentShader im obigen Beispiel.
In diesem Artikel
Beispiele
>Verwendung des Programms
Die Schritte, um mit dem Programm tatsächlich zu arbeiten, bestehen darin, der GPU mitzuteilen, das Programm zu verwenden, die entsprechenden Daten und Konfigurationsoptionen zu binden und schließlich etwas auf den Bildschirm zu zeichnen.
// Use the programgl.useProgram(program);// Bind existing attribute datagl.bindBuffer(gl.ARRAY_BUFFER, buffer);gl.enableVertexAttribArray(attributeLocation);gl.vertexAttribPointer(attributeLocation, 3, gl.FLOAT, false, 0, 0);// Draw a single trianglegl.drawArrays(gl.TRIANGLES, 0, 3);Löschen des Programms
Wenn beim Verlinken des Programms ein Fehler auftritt oder Sie ein bestehendes Programm löschen möchten, ist es so einfach,WebGLRenderingContext.deleteProgram() auszuführen. Dies gibt den Speicher des verlinkten Programms frei.
gl.deleteProgram(program);Spezifikationen
| Specification |
|---|
| WebGL Specification> # 5.6> |
Browser-Kompatibilität
Siehe auch
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()