2014-10-28 160 views
3

我試圖顯示一個簡單的三角形對象和簡單的方形對象的代碼有問題。當我運行代碼時,不會出現任何對象。問題在於mat4.perspective函數和可能的參數。下面是錯誤代碼:WebGL和mat4.perspective函數不工作

function drawScene() { 
     gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight); 
     gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 
     var rads=45*(Math.PI/180); 
     mat4.perspective(pMatrix, rads, gl.viewportWidth/gl.viewportHeight, 0.1, 100.0); 
     alert("this works"); 
     mat4.identity(mvMatrix); 
     mat4.translate(mvMatrix, mvMatrix [-1.5, 0.0, -7.0]); 
     gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexPositionBuffer); 
     gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, triangleVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0); 
     setMatrixUniforms(); 
     gl.drawArrays(gl.TRIANGLES, 0, triangleVertexPositionBuffer.numItems); 


     mat4.translate(mvMatrix, mvMatrix [3.0, 0.0, 0.0]); 
     gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer); 
     gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, squareVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0); 
     setMatrixUniforms(); 
     gl.drawArrays(gl.TRIANGLE_STRIP, 0, squareVertexPositionBuffer.numItems); 
    } 

的JS警告我說作品mat4.perspective前行而非事後,所以我知道問題出在這行。對於我所做錯的任何建議以及如何糾正問題?

+0

您是否在開發工具中遇到任何錯誤? – 2014-10-28 14:53:41

+0

是的,它說mat4沒有定義。一旦在上一行:var mvMatrix = mat4.create();並且一次在mat4.perspective行 – user2988960 2014-10-28 16:23:28

+0

也許'mat4沒有定義'您是否在JavaScript之前包含了'gl-matrix'? – 2014-10-28 17:34:31

回答

1

我有一個工作設置成我把你的代碼......這條線是犯罪嫌疑人

mat4.perspective(pMatrix, rads, gl.viewportWidth/gl.viewportHeight, 0.1, 100.0); 

這裏是我的,你可以嘗試

mat4.perspective(FoV , gl.viewportWidth/gl.viewportHeight, 0.1, 100.0, pMatrix); 

其中

var FoV = 20.0; 

控制視野

這裏是一個WebGL的項目,我寫了一個實現鍵盤+鼠標 相互作用放大約/平移/幻燈片......隨時隨意 注掠奪 - 這是我的javascript第一次使用/ WebGL的這麼把它用糧鹽,但它確實尖叫!

https://github.com/scottstensland/webgl-3d-animation 
+1

由於glMatrix版本2.0的第一個參數是* *總是輸出參數使OP的mat4.perspective調用正確。 – 2014-10-28 21:10:30

+0

@ LJ_1102 - 相關提示 - 操作提及0.9.5 – 2014-10-28 21:25:30

+0

那麼這是否意味着我應該升級到更新版本的glMatrix?可能是創建和透視函數沒有在0.9.5中定義。如果我需要升級,我應該使用哪個版本,我可以在哪裏找到它? – user2988960 2014-10-29 10:36:56