我创建了我的数组this.kernel:它有48个元素,我想把它传递给我的片段着色器。
当我打电话
gl.uniform3fv(gl.getUniformLocation(this.program, "kernel"), 16, this.kernel);
内核在我的着色器中定义:
uniform vec3 kernel[16];
由于参数不足,我收到错误。 我已经查找了规范等,但没有找到我的问题-.-
void glUniform3fv( GLint location, GLsizei count, const GLfloat * value);
感谢您的帮助
€:我将this.kernel转换为float32array但我仍然有这个错误。
€2:Chrome中的错误:参数不足
Firefox中的:NS_ERROR_XPC_BAD_CONVERT_JS:无法转换JavaScript参数
答案 0 :(得分:3)
您的this.kernel
需要是长度为48(= 3 * 16)的Float32Array。你不能使用vec3s数组。
此外,WebGL中不使用计数。该函数是(来自WebGL Specification)
void uniform3fv(WebGLUniformLocation? location, Float32Array v);
使用示例:
gl.uniform3fv(gl.getUniformLocation(shaderProgram, "colors"), new Float32Array([0,1,2,3,4,5]));
在此处查看完整示例: http://jsfiddle.net/mortennobel/URvtx/