WebGL渲染无视位置?

时间:2015-08-29 16:23:35

标签: javascript webgl

我一直在关注learningwebgl.com,并在3D part of the tutorial上遇到了一些问题。据我所知,我已经完成了相同的代码,但由于某些原因我无法让它工作。两个三角形都被渲染,但是一个三角形的颜色会透过另一个三角形。 Here is a simplified version只有两种颜色和两个三角形。如果我的代码有任何问题,请告诉我。谢谢!

下面是我将数据加载到着色器的代码。

 //initialize buffer objects
triangleVertexPositionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexPositionBuffer);
gl.bufferData(
    gl.ARRAY_BUFFER,
    new Float32Array([
        0.0, 1.0, 0.0,
        -1.0, -1.0, 1.0,
        1.0, -1.0, 1.0,
        0.0, 1.0, 0.0,
        1.0, -1.0, 1.0,
        1.0, -1.0, -1.0
    ]),
gl.STATIC_DRAW);
triangleVertexPositionBuffer.itemSize = 3;
triangleVertexPositionBuffer.numItems = 6;


triangleVertexColorBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexColorBuffer);
gl.bufferData(
gl.ARRAY_BUFFER,
new Float32Array([
        // front face
        1.0, 1.0, 0.0, 1.0,
        1.0, 1.0, 0.0, 1.0,
        1.0, 1.0, 0.0, 1.0,
        1.0, 0.0, 0.0, 1.0,
        1.0, 0.0, 0.0, 1.0,
        1.0, 0.0, 0.0, 1.0
    ]),
gl.STATIC_DRAW);
triangleVertexColorBuffer.itemSize = 4;
triangleVertexColorBuffer.numItems = 6;

1 个答案:

答案 0 :(得分:2)

问题是OP没有启用深度测试。别忘了启用它:P。