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 で指定する数値は、画面のピクセル単位ですか?