Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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 WebGL代码生成与预制库相同的矩阵,但不显示相同的矩阵_Javascript_Canvas_Matrix_Opengl Es_Webgl - Fatal编程技术网

Javascript WebGL代码生成与预制库相同的矩阵,但不显示相同的矩阵

Javascript WebGL代码生成与预制库相同的矩阵,但不显示相同的矩阵,javascript,canvas,matrix,opengl-es,webgl,Javascript,Canvas,Matrix,Opengl Es,Webgl,我正在处理一个3D函数库(为了好玩),但在代码中找不到错误。从我所看到的,由我的代码和一个预先制作的库生成的矩阵是完全相同的。我使用相同的顶点位置,但没有显示任何东西,这让我发疯 我的版本: 预先制作的工作版本(目标输出): 我已经在每个版本上记录了矩阵 主要部分(我的版本): 主要部分(工作版本): 我想出来了。我的数组按行主顺序排列,而不是按GLSL要求的列主顺序排列。这帮了大忙:我认为你的数学库实际上没有产生相同的结果。我使用的是查看每个链接中程序的状态。有一些非常显著的差异 很

我正在处理一个3D函数库(为了好玩),但在代码中找不到错误。从我所看到的,由我的代码和一个预先制作的库生成的矩阵是完全相同的。我使用相同的顶点位置,但没有显示任何东西,这让我发疯

我的版本:

预先制作的工作版本(目标输出):

我已经在每个版本上记录了矩阵

主要部分(我的版本):


主要部分(工作版本):


我想出来了。我的数组按行主顺序排列,而不是按GLSL要求的列主顺序排列。这帮了大忙:

我认为你的数学库实际上没有产生相同的结果。我使用的是查看每个链接中程序的状态。有一些非常显著的差异


很高兴您找到了问题所在。不过,仅供参考,列主视图与行主视图不是存储问题,而是数据在数学函数中如何使用的问题。你可以交换它们的存储方式,也可以交换它们在数学函数中的使用方式,你会得到相同的结果。谢谢你链接到那个检查员,可能会非常有用。
var translate = [0.5, 0, 0];
var modelMatrix = identity(4);
modelMatrix.setXY(3, 0, translate[0]);
modelMatrix.setXY(3, 1, translate[1]);
modelMatrix.setXY(3, 2, translate[2]);

var eye = createVector([0, 0, 2.25]);
var focus = createVector([0, 0, 0]);
var up = createVector([0, 1, 0]);

modelMatrix = modelMatrix;
var viewMatrix = lookAt(eye, focus, up);
var projectionMatrix = perspective(canvas, 50 * Math.PI / 180, 1, 10);
// local coords -> world space
var modelMatrix = mat4.create();
mat4.translate(modelMatrix, modelMatrix, vec3.fromValues(0.5, 0.0, 0.0));

// world space -> camera space
var eye = vec3.fromValues(0, 0, 2.25);
var lookAt = vec3.fromValues(0, 0, 0);
var up = vec3.fromValues(0, 1, 0);
var viewMatrix = mat4.create();

mat4.lookAt(viewMatrix, eye, lookAt, up);

var projMatrix = mat4.create();
mat4.perspective(projMatrix, 50 * Math.PI / 180, canvas.clientWidth / canvas.clientHeight, 1, 10);