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

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

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

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

其中 overlayvertices[i] 是一个 4*1 数组,其中 x,y,z,1

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

4

1 回答 1

0

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

gl_Position = P * MV * vertex_position

这正是您想要在 OpenGL 之外复制该转换的计算,即它的顶点着色器阶段。

于 2015-03-05T02:06:26.477 回答