Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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
Javascript 未能执行';uniformMatrix4fv';_Javascript_Glsl_Webgl - Fatal编程技术网

Javascript 未能执行';uniformMatrix4fv';

Javascript 未能执行';uniformMatrix4fv';,javascript,glsl,webgl,Javascript,Glsl,Webgl,我对OpenGL和Javascript非常陌生,所以我不确定到底出了什么问题。我正在制作一个程序,可以沿x、y和z三个轴旋转一个形状。我试图用旋转矩阵乘以我的位置向量,但我得到了以下错误: Uncaught TypeError:未能在“WebGLRenderingContext”上执行“uniformMatrix4fv”:未找到与提供的签名匹配的函数。 这是我的顶点着色器,我缩短了它,以隐藏已经工作的不必要的代码,这样我可以突出显示问题所在。这里也有乘法: attribute vec2 pos;

我对OpenGL和Javascript非常陌生,所以我不确定到底出了什么问题。我正在制作一个程序,可以沿x、y和z三个轴旋转一个形状。我试图用旋转矩阵乘以我的位置向量,但我得到了以下错误:

Uncaught TypeError:未能在“WebGLRenderingContext”上执行“uniformMatrix4fv”:未找到与提供的签名匹配的函数。

这是我的顶点着色器,我缩短了它,以隐藏已经工作的不必要的代码,这样我可以突出显示问题所在。这里也有乘法:

attribute vec2 pos;
uniform mat4 rotation;

void main(){

 gl_Position = rotation*vec4(vec3(pos,0),1);

 gl_Position.x = pos.x*cos(shift) - pos.y*sin(shift);
 gl_Position.y = pos.y*cos(shift)  + pos.x*sin(shift);
 gl_Position.z =0.0;
 gl_Position.w =1.0;
}
这是一个旋转函数,我为每个轴做一个。旋转矩阵为4x4,如下所示:

function xAxis(angle){
var c = Math.cos(angle);
var s = Math.sin(angle);

return[
1,0,0,0,
0,c,-s,0,
0,s,c,0,
0,0,0,1
];
}
但是当我试图在draw函数中使用这个命令时,我得到了一个错误

gl.uniformMatrix4fv(rotationLocation, false, rotation);
所以我的问题是如何修复这个错误

编辑:我应该补充一点,我使用的是Javascript文件和HTML文件。所有重要的代码,例如顶点着色器、片段着色器等,都在Javascript文件中

编辑2:我还应该补充一点,在添加这些代码行之前,程序运行良好


编辑3:这里有一个例子,我把它转换成文本文件以便更容易阅读,所以我解决了这个问题。我在程序中意外创建了2个
xAxis()
函数。按照我的设计方法,第一个将确定旋转哪个轴,第二个将执行矩阵乘法。我错误地给了他们相同的名字,这导致了我的错误,当我将其中一个重命名为
xAxis\u rotate()
时,我的问题得到了解决。

好的,所以我解决了问题。我在程序中意外创建了2个
xAxis()
函数。按照我的设计方法,第一个将确定旋转哪个轴,第二个将执行矩阵乘法。我错误地给了他们相同的名字,这导致了我的错误,当我将一个名字重命名为
xAxis_rotate()
时,我的问题得到了解决。

尝试减少到最低可行的例子,如这里所述:@wcochran谢谢,我现在就试试Jason,你需要添加更多的代码@Spektre,你的评论与WebGL无关。@gman我想我将只链接整个javascript文件,因为我不确定需要添加多少代码。我有更多的代码,但我被告知要从itTry中删除以打印出
旋转位置
尝试减少到最低可行的示例,如这里所述:@wcochran谢谢,我现在就试试Jason,你需要添加更多的代码@Spektre,你的评论与WebGL无关。@gman我想我将只链接整个javascript文件,因为我不确定需要添加多少代码。我有更多的代码,但我被告知从itTry中删除以打印出
旋转位置