我希望在 WebGL 的 xy 平面 (z=0) 上绘制 2D 形状。
我正在从这里阅读。
这是我的drawScene函数:
function drawScene() {
gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
mat4.perspective(45, gl.viewportWidth / gl.viewportHeight, 0.1, 100.0, pMatrix);
mat4.identity(mvMatrix);
mat4.translate(mvMatrix, [2.0, 5.0, -1.0]);
mvPushMatrix();
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer);
gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, squareVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexColorBuffer);
gl.vertexAttribPointer(shaderProgram.vertexColorAttribute,squareVertexColorBuffer.itemSize, gl.FLOAT, false, 0, 0);
setMatrixUniforms();
gl.drawArrays(gl.TRIANGLE_FAN, 0, squareVertexPositionBuffer.numItems);
mvPopMatrix();
}
squareVertexPositionBuffer 和 squareVertexColorBuffer 是我的对象的形状和颜色缓冲区。
问题在这里:
mat4.perspective(45, gl.viewportWidth / gl.viewportHeight, 0.1, 100.0, pMatrix);
和
mat4.translate(mvMatrix, [2.0, 5.0, -1.0]);
我希望在 z=0 平面上绘制对象。所以当我把它改成
mat4.perspective(45, gl.viewportWidth / gl.viewportHeight, 0.0, 100.0, pMatrix);
和
mat4.translate(mvMatrix, [2.0, 5.0, 0.0]);
屏幕上什么也没有显示。为什么会这样?
此外,我们在 WebGL 中指定的数字是否以屏幕像素单位转换和存储缓冲区中的形状坐标?