// 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内部发生,我无法检索此信息。
答案 0 :(得分:0)
缺失的部分(在你的问题中)是绘图时使用的顶点着色器。该顶点着色器将采用两个矩阵并使用它们来变换顶点。具体取决于着色器,但在大多数情况下表达式为
gl_Position = P * MV * vertex_position
这正是您希望在OpenGL之外再现该变换的计算,即其顶点着色器阶段。