Lorsque je tente de relier mon sommet et fragment shaders dans un programme, WebGL jette Varyings with the same name but different type, or statically used varyings in fragment shader are not declared in vertex shader: textureCoordinates
Pourquoi mon WebGL shader ne me laisse pas utiliser les variations?
J'ai varying vec2 test
dans mes deux vertex shaders et fragment, et on ne voit aucune raison pour laquelle le compilateur ne serait pas en mesure de trouver le même varying
dans les deux.
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);
}
Code d'essai:
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);
Quel navigateur utilisez-vous? Je ne reçois aucune erreur avec Chrome pour Windows v51.0.2704.103m (64 bits). Voici le [code exact] (http://pastebin.com/6EXAetZ2) J'exécute. – Exide
@Exposer la mise à jour de mon navigateur a résolu le problème. Bizarre. –