Hi 
Ich schreibe Vertex- und Fragment-Shader in html-script-tags in den html-head. Z. B.:
Die script-Texte lese ich in JS aus. Siehe https://developer.mozilla.org/de/do...ufügen_von_2D_Inhalten_in_einen_WebGL-Kontext "Shader aus dem DOM laden".
In den Shadern definiere ich diverse Variablen:
- attributes
- uniforms
- varyings
Nun möchte ich nicht nur die shader-script-Texte per JS auslesen, sondern auch automatisch die shader-Variablen in JS deklarieren.
Z. B. habe ich in einem shader-script definiert:
Mein JS-script soll dann automatisch die folgende Funktion ausführen:
Der JS-Parser erkennt im shader-script das attribute und führt automatisch aus:
Ist das erlaubt? Funktioniert das dann generell für alle Attribute? Für vec2, vec3 und vec4-Attribute scheint das zu stimmen, wenn ich das oben verlinkte Tutorial richtig verstanden habe.
Ich schreibe Vertex- und Fragment-Shader in html-script-tags in den html-head. Z. B.:
HTML:
<head>
<script id="vs" type="x-shader/x-vertex">
</script>
<script id="fs" type="x-shader/x-fragment">
</script>
</head>
In den Shadern definiere ich diverse Variablen:
- attributes
- uniforms
- varyings
Nun möchte ich nicht nur die shader-script-Texte per JS auslesen, sondern auch automatisch die shader-Variablen in JS deklarieren.
Z. B. habe ich in einem shader-script definiert:
Code:
attribute vec3 aVertexPosition;
Code:
/**
* @param object gl WebGL-Kontext
* @param object program WebGL-Programm
* @param string name Attribut-Name
* @return int Attribut-Index
*/
function getAttrib(gl, program, name) {
var index = gl.getAttribLocation(program, name);
gl.enableVertexAttribArray(index);
return index;
}
Code:
var vertexPositionAttrib = getAttrib(gl, program, "aVertexPosition");
Ist das erlaubt? Funktioniert das dann generell für alle Attribute? Für vec2, vec3 und vec4-Attribute scheint das zu stimmen, wenn ich das oben verlinkte Tutorial richtig verstanden habe.
Zuletzt bearbeitet: