Когда я пытаюсь связать свои вершинные и фрагмент шейдеры в программу, 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
в обоих.
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);
}
Фрагмент Shader: Код
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 для Windows v51.0.2704.103m (64-разрядная версия). Вот [точный код] (http://pastebin.com/6EXAetZ2), который я выполняю. – Exide
@ При обновлении моего браузера исправлена проблема. Weird. –