2014-10-28 151 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