Javascript 为什么这个简单的转换矩阵不';行不通
首先,以下是翻译的工作版本: (代码取自并修改自) 在代码的工作版本中,翻译矩阵为Javascript 为什么这个简单的转换矩阵不';行不通,javascript,graphics,webgl,webgl2,Javascript,Graphics,Webgl,Webgl2,首先,以下是翻译的工作版本: (代码取自并修改自) 在代码的工作版本中,翻译矩阵为 [ 1, 0, 0, 0, 1, 0, tx, ty, 1, ] 这是我在图形学课上教的转换矩阵的转置。在我的课堂上,翻译矩阵表示为 [ 1, 0, tx, 0, 1, ty, 0, 0, 1, ] 我试图找出差异的来源。所以我决定改变工作版本的顶点着色器,从js文件发送平移矩阵,如下所示 uniform m
[
1, 0, 0,
0, 1, 0,
tx, ty, 1,
]
这是我在图形学课上教的转换矩阵的转置。在我的课堂上,翻译矩阵表示为
[
1, 0, tx,
0, 1, ty,
0, 0, 1,
]
我试图找出差异的来源。所以我决定改变工作版本的顶点着色器,从js文件发送平移矩阵,如下所示
uniform mat3 u_matrix;
void main() {
// Multiply the position by the matrix.
vec2 position = (u_matrix * vec3(a_position, 1)).xy;
}
直接在顶点着色器中构造平移矩阵的步骤
uniform float tx;
uniform float ty;
void main() {
mat3 u_matrix = mat3( 1, 0, tx,
0, 1, ty,
0, 0, 1,);
vec2 position = (u_matrix * vec3(a_position, 1)).xy;
...}
这是修改后的版本
但是似乎有一个bug
Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.
webgl-utils.js:67 *** Error compiling shader '[object WebGLShader]':ERROR: 0:18: ')' : syntax error
有人能告诉我代码的修改版本哪里错了,为什么翻译矩阵存在差异 您有两个问题
1.你打错了。
正如@Rabbid76所指出的那样
这个
如果不那么让人困惑的话,还是这个
vec3 col0 = vec3(1, 0, 0);
vec3 col1 = vec3(0, 1, 0);
vec3 col2 = vec3(tx, ty, 1);
mat3 u_matrix = mat3(col0, col1, col2);
请参见删除
0,0,1,)中括号前的最后一个逗号
mat3 u_matrix = mat3(
1, 0, 0,
0, 1, 0,
tx, ty, 1);
vec3 col0 = vec3(1, 0, 0);
vec3 col1 = vec3(0, 1, 0);
vec3 col2 = vec3(tx, ty, 1);
mat3 u_matrix = mat3(col0, col1, col2);