我有一個非常基本的問題。我對webgl很陌生,試圖畫一個簡單的方塊。我正在使用gl矩陣庫進行矩陣操作。在webgl中繪製一個簡單的正方形
JavaScript代碼:
squareVertexPositionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer);
vertices = [
0.9, 0.9, 0.0,1.0,
-0.9, 0.9, 0.0,1.0,
0.9, -0.9, 0.0,1.0,
-0.9, -0.9, 0.0,1.0
];
squareVertexPositionBuffer.itemSize = 4;
squareVertexPositionBuffer.numItems = 4;
mat4.identity(pMatrix);
mat4.perspective(45, gl.viewportWidth/gl.viewportHeight, 0.1, 100.0, pMatrix);
mat4.identity(mvMatrix);
mat4.translate(mvMatrix, [-1.5, 0.0, -7.0]);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, squareVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
setMatrixUniforms();
gl.drawArrays(gl.TRIANGLE_STRIP, 0, squareVertexPositionBuffer.numItems);
着色器:
attribute vec3 aVertexPosition;
uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;
varying vec3 debug;
void main(void) {
gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition.xyz, 1.0);
debug = aVertexPosition;
}
這似乎摸出fine.Here我傳遞模型視圖和透視矩陣作爲制服的着色器程序,並乘以他們那裏的頂點座標。但是,如果在javascript中將模型視圖和透視矩陣相乘,然後將修改後的頂點傳遞給着色器,它似乎不起作用。
我無法發現錯誤。幫助高度讚賞!
如果你想繪製2D檢出http://games.greggman.com/game/webgl-fundamentals/沒有必要使用2D模型視圖和投影矩陣。 – gman 2012-08-17 20:07:45