Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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和mat4.perspective函数不工作_Javascript_Webgl - Fatal编程技术网

Javascript WebGL和mat4.perspective函数不工作

Javascript WebGL和mat4.perspective函数不工作,javascript,webgl,Javascript,Webgl,我对试图显示简单三角形对象和简单正方形对象的代码有问题。当我运行代码时,两个对象都没有出现。问题在于mat4.perspective函数和可能的参数。以下是错误代码: function drawScene() { gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight); gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); var ra

我对试图显示简单三角形对象和简单正方形对象的代码有问题。当我运行代码时,两个对象都没有出现。问题在于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行之前起作用,但在mat4.perspective行之后不起作用,因此我知道问题出在这一行。有没有关于我做错了什么以及如何纠正问题的建议?

我有一个工作设置,我将您的代码放入其中。。。这条线路可疑

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

开发工具中有错误吗?是的,它说mat4没有定义。上一行:var mvMatrix=mat4.create();一旦进入mat4.perspective行,可能
mat4未定义
在javascript之前是否包含
gl矩阵
?是,接近顶部的部分是因为glMatrix版本2.0,第一个参数始终是输出参数,使得OP的
mat4.perspective
调用正确。这是否意味着我应该升级到glMatrix的新版本?可能是0.9.5中没有定义create和perspective函数。如果我需要升级,我应该使用哪个版本,在哪里可以找到它?我的设置使用0.9.5,它既有create,又有perspective,运行良好。你能把你的整个代码库放在JSFIDLE上,这样我们就可以t/s它了吗?