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