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] は x、y、z、1 の 4*1 配列です

最終的な描画は、モデルビューと投影行列が決定される特定のカメラのフレームで行われます。カメラフレームで変換された頂点を手動で取得したいと思います。すなわち、(x,y,1)。後で各フレーム内のデータをダウンロードするため、x、y はピクセル座標である必要があります。これは webgl の内部で発生するため、この情報を取得できません。

4

1 に答える 1

0

不足している部分 (質問で) は、描画時に使用される頂点シェーダーです。この頂点シェーダーは 2 つのマトリックスを取得し、それらを使用して頂点を変換します。どの程度正確かはシェーダーによって異なりますが、ほとんどの場合、式は次のようになります。

gl_Position = P * MV * vertex_position

そして、それはまさに、その変換を OpenGL の外で再現したい計算、つまりその頂点シェーダー ステージです。

于 2015-03-05T02:06:26.477 に答える