--- title: WebGLProgram slug: Web/API/WebGLProgram tags: - WebGL - WebGLProgram translation_of: Web/API/WebGLProgram ---
Das WebGLProgram ist ein Teil der WebGL API und ist eine Kombination aus zwei kompilierten {{domxref("WebGLShader")}}n, bestehend aus einem Vertex-Shader und einem Fragment-Shader (beide in GLSL geschrieben). Diese werden dann zu einem benutzbaren Programm zusammen gelinkt.
var program = gl.createProgram(); // Bereits existierende Shader hinzufügen gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); if ( !gl.getProgramParameter( program, gl.LINK_STATUS) ) { var info = gl.getProgramInfoLog(program); throw "WebGL-Programm konnte nicht kompiliert werden. \n\n" + info; }
Für weitere Informationen über das Erstellen von vertexShader
und fragmentShader, lese dir
{{domxref("WebGLShader")}} durch.
Hier wird zu erst der GPU mit geteilt, dass sie das Programm benutzen soll. Danach werden die benötigten Daten und Konfigurationen vorgenommen und zuletzt wird etwas auf den Bildschirm gezeichnet.
// Das Programm benutzen gl.useProgram(program); // Bereits existierende Attribute binden gl.bindBuffer(gl.ARRAY_BUFFER, buffer); gl.enableVertexAttribArray(attributeLocation); gl.vertexAttribPointer(attributeLocation, 3, gl.FLOAT, false, 0, 0); // Ein einzelnes Dreieck zeichnen gl.drawArrays(gl.TRIANGLES, 0, 3);
Falls es bei dem Linken des Programms zu fehlern kommt oder falls du ein bereits erstelltes Programm einfach nur löschen möchtest, dann kannst du einfach {{domxref("WebGLRenderingContext.deleteProgram()")}} ausführen. Dies löscht den Speicher des gelinkten Programms.
gl.deleteProgram(program);
Spezifikation | Status | Kommentar |
---|---|---|
{{SpecName('WebGL', "#5.6", "WebGLProgram")}} | {{Spec2('WebGL')}} | Erstmalige Definition |
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | {{CompatChrome("9")}} | {{CompatGeckoDesktop("2.0")}} | {{CompatIE("11")}} | {{CompatOpera("12")}} | {{CompatSafari("5.1")}} |
Available in workers | {{CompatNo}} | {{CompatGeckoDesktop(44)}} [1] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{CompatUnknown}} | 25 | {{CompatVersionUnknown}} | {{CompatUnknown}} | 12 | 8.1 |
Available in workers | {{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile(44)}} [1] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
[1] This feature is behind a feature preference setting. In about:config, set gfx.offscreencanvas.enabled
to true
.