webgl中的矩阵和投影

时间:2015-03-05 01:29:54

标签: opengl-es webgl projection-matrix

// Upload Projection, ModelView matrices
gl.uniformMatrix4fv(shaderProgram.uMVMatrix, false, pMVMatrix);
gl.uniformMatrix4fv(shaderProgram.uPMatrix, false, perspM);

在上面的几行中,我了解投影矩阵和模型视图矩阵正在上传。我想知道这背后的数学。

我有一些3d顶点(叠加),后来以这种方式传递:

// Upload overlay vertices                      
gl.bindBuffer(gl.ARRAY_BUFFER, overlayVertices[elementIndex]);
gl.vertexAttribPointer(shaderProgram.aVertexPosition, 3, gl.FLOAT,false, 0, 0);

其中overlayvertices [i]是一个带有x,y,z,1

的4 * 1数组

最终绘图发生在特定相机的帧上,基于该帧确定模型视图和投影矩阵。我想手动获取相机框架中的变换顶点。即,(x,y,1)。我稍后下载每帧内的数据,因此x,y应该是像素坐标。由于这在webgl内部发生,我无法检索此信息。

1 个答案:

答案 0 :(得分:0)

缺失的部分(在你的问题中)是绘图时使用的顶点着色器。该顶点着色器将采用两个矩阵并使用它们来变换顶点。具体取决于着色器,但在大多数情况下表达式为

gl_Position = P * MV * vertex_position

这正是您希望在OpenGL之外再现该变换的计算,即其顶点着色器阶段。