Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome 将数组传递到着色器_Google Chrome_Firefox_Opengl Es_Webgl_Shader - Fatal编程技术网

Google chrome 将数组传递到着色器

Google chrome 将数组传递到着色器,google-chrome,firefox,opengl-es,webgl,shader,Google Chrome,Firefox,Opengl Es,Webgl,Shader,我创建了数组this.kernel:它有48个元素,我想把它传递给我的片段着色器 当我打电话时 gl.uniform3fv(gl.getUniformLocation(this.program, "kernel"), 16, this.kernel); 内核在我的着色器中定义: uniform vec3 kernel[16]; 我因参数不足而出错。 我已经查阅了说明书等,但没有发现我的问题-- void glUniform3fv( GLint location, GLsizei c

我创建了数组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\u ERROR\u XPC\u BAD\u CONVERT\u JS:无法转换JavaScript参数

您的
这个。内核
需要是长度为48(=3*16)的float32数组。不能使用矢量3数组

此外,在WebGL中不使用计数。函数是(从)

用法示例:

gl.uniform3fv(gl.getUniformLocation(shaderProgram, "colors"), new Float32Array([0,1,2,3,4,5]));
请参见此处的完整示例:

啊,好的。我将数组this.kernel更改为this.kernel=new Float32Array(this.kernel);长度正好是48。我只是想说清楚,我的着色器中的内核是一个vec3,仍然得到错误,参数不够。谢谢。我做了很多实验,但似乎我忘记了这个变化。
gl.uniform3fv(gl.getUniformLocation(shaderProgram, "colors"), new Float32Array([0,1,2,3,4,5]));