、WebGLのはVaryings with the same name but different type, or statically used varyings in fragment shader are not declared in vertex shader: textureCoordinates
なぜ私のWebGLシェーダは変化を使用しないようにしますか?私はプログラムに私の頂点とフラグメントシェーダをリンクしようとすると
をスローし、私は私の頂点とフラグメントシェーダの両方にvarying vec2 test
を持っている、とコンパイラがすることができないであろう、なぜ何らかの理由を見ることができません両方で同じvarying
を見つけてください。
バーテックスシェーダ:
varying vec2 test;
void main(void) {
gl_Position = vec4(0.0, 0.0, 0.0, 0.0);
test = vec2(1.0, 0.0);
}
フラグメントシェーダ:
precision highp float;
varying vec2 test;
void main(void) {
gl_FragColor = vec4(test.xy, 0.0, 1.0);
}
テストコード:
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);
あなたはどのブラウザを使用していますか? Chrome for Windows v51.0.2704.103m(64ビット)でエラーは発生しません。ここで私が実行している[正確なコード](http://pastebin.com/6EXAetZ2)です。 – Exide
@ブラウザのアップデートで問題を修正しました。奇妙な。 –