簡體   English   中英

WebGL代碼生成與預制庫相同的矩陣,但不顯示相同的矩陣

[英]WebGL code produces same matrices as pre-made library but does not display the same

我正在開發一個3D函數庫(為了好玩),我無法在我的代碼中找到錯誤。 從我所看到的,我的代碼和預制庫產生的矩陣完全相同。 我使用相同的頂點位置,但沒有任何顯示,這讓我發瘋。

我的版本:
http://robjte.de/webgl/notworking.html
http://jsfiddle.net/uh9574z0/

預制工作版(目標輸出):
http://robjte.de/webgl/working.html
http://jsfiddle.net/5daae976/

我有控制台記錄每個版本的矩陣。

主要部分(我的版本):

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);

我不認為你的數學庫實際上產生了相同的結果。 我使用WebGL Inspector來查看每個鏈接中程序的狀態。 有一些非常顯着的差異。

不一樣

我想到了。 我的數組按行主要順序而不是GLSL要求的列主要順序。 這有很大幫助: 正確的OpenGL矩陣格式?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM