无法执行'uniformMatrix4fv'

问题描述 投票:1回答:1

我对OpenGL和Javascript非常陌生,所以我不确定到底是什么错误。我正在制作一个程序,可以沿所有三个轴x,y和z旋转形状。我正在尝试将位置向量与旋转矩阵相乘,但出现此错误:

Uncaught TypeError: Failed to execute 'uniformMatrix4fv' on 'WebGLRenderingContext': No function was found that matched the signature provided.

这里是我的顶点着色器,我已经将其缩短以隐藏已经起作用的不必要的代码,因此我可以突出显示问题所在。我在这里也有乘法:

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:这是Link to my Javascript code,我将其转换为文本文件以便于阅读

javascript glsl webgl
1个回答
0
投票

好,所以我找出了问题所在。我不小心在程序中创建了2个xAxis()函数。按照我的设计方式,第一个将确定要旋转的轴,第二个将进行矩阵乘法。我错误地给了他们一个错误的名字,当我将其重命名为xAxis_rotate()时,我的问题就解决了。

© www.soinside.com 2019 - 2024. All rights reserved.