WebGLProgram

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Das WebGLProgram ist Teil der WebGL-API und ist eine Kombination aus zwei kompilierten WebGLShader-Shadern, bestehend aus einem Vertex-Shader und einem Fragment-Shader (beide geschrieben in GLSL).

WebGLObject WebGLProgram

Um ein WebGLProgram zu erstellen, rufen Sie die createProgram()-Funktion des GL-Kontexts auf. Nachdem Sie die Shader-Programme mit attachShader() angefügt haben, verknüpfen Sie sie zu einem nutzbaren Programm. Dies wird im folgenden Code gezeigt.

js
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}`;
}

Siehe WebGLShader für Informationen zur Erstellung des vertexShader und fragmentShader im obigen Beispiel.

Beispiele

Verwendung des Programms

Die Schritte, um tatsächlich mit dem Programm zu arbeiten, beinhalten, der GPU zu sagen, sie solle das Programm verwenden, die entsprechenden Daten und Konfigurationsoptionen zu binden und schließlich etwas auf den Bildschirm zu zeichnen.

js
// 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);

Löschen des Programms

Wenn ein Fehler beim Verknüpfen des Programms auftritt oder Sie ein bestehendes Programm löschen möchten, ist es so einfach, WebGLRenderingContext.deleteProgram() auszuführen. Dies gibt den Speicher des verknüpften Programms frei.

js
gl.deleteProgram(program);

Spezifikationen

Specification
WebGL Specification
# 5.6

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
WebGLProgram
Available in workers
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.

Siehe auch