Wenn ich versuche, meine Vertex- und Fragment-Shader in ein Programm zu verbinden, wirft WebGL Varyings with the same name but different type, or statically used varyings in fragment shader are not declared in vertex shader: textureCoordinates
Warum lässt mein WebGL-Shader mich nicht variieren?
Ich habe varying vec2 test
in meinen beiden Vertex- und Fragment-Shader, und aus irgendeinem Grunde nicht sehen kann, warum der Compiler nicht in der Lage sein würde, finden Sie das gleiche varying
in beiden.
Vertex Shader:
varying vec2 test;
void main(void) {
gl_Position = vec4(0.0, 0.0, 0.0, 0.0);
test = vec2(1.0, 0.0);
}
Fragment Shader:
precision highp float;
varying vec2 test;
void main(void) {
gl_FragColor = vec4(test.xy, 0.0, 1.0);
}
Prüfregeln:
const canvas = document.createElement('canvas');
gl = canvas.getContext('webgl')
let vert = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vert, "varying vec2 test;\nvoid main(void) {\n gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\n test = vec2(1.0, 0.0);\n}");
gl.compileShader(vert);
let frag = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(frag, "precision highp float;\nvarying vec2 test;\nvoid main() {\n\tgl_FragColor = vec4(test.xy, 0.0, 1.0);\n}");
gl.compileShader(frag);
let program = gl.createProgram();
gl.attachShader(program, vert);
gl.attachShader(program, frag);
gl.linkProgram(program);
gl.useProgram(program);
Welchen Browser benutzen Sie? Ich bekomme keine Fehler mit Chrome für Windows v51.0.2704.103m (64-Bit). Hier ist der [genaue Code] (http://pastebin.com/6EXAetZ2), den ich ausführe. – Exide
@Exid Aktualisierung meines Browsers das Problem behoben. Seltsam. –