У меня есть этот кусок кода:
var FSHADER_SOURCE = `
precision mediump float;
uniform vec4 u_FragColor;
void main() {
gl_FragColor = u_FragColor;
}`;
Также есть функция для изменения цвета фрагмента шейдера:
var gl = getWebGLContext(canvas);
var u_FragColor = gl.getUniformLocation(gl.program, 'u_FragColor');
// lines to set rgb
gl.uniform4f(u_FragColor, rgb[0], rgb[1], rgb[2], rgb[3]);
Странно, я вижу, что rgb установлен на что-то вроде [0,1,0,1]
но цвет для фрагмента шейдера в любом случае черный.Даже если я изменю код на:
// still black
gl.uniform4f(u_FragColor, 0.0, 1.0, 0.0, 1.0);
Единственный способ изменить цвет - это напрямую изменить каналы rgb без использования u_FragColor
.Что мне здесь не хватает?
Также полный код указан на gist , если полезно.