多くの3Dグラフィックプログラムと同様に、私は独自のモデル座標(x、y、 z軸)を含む。次に、モデル座標からワールド座標まで(描画されるオブジェクトの位置、回転、スケールを使用して)、行列を取得します。最後に、これらのワールド座標をOopenGL ES 2.0が画面に描画するために使用する標準座標に変換するための2番目の行列を持っています。モデル空間から、OpenGL ES 2.0の標準座標空間への座標を取る最も速い方法
したがって、1つのオブジェクトには、ワールド空間と標準座標の両方に同じ変換を使用する多くの頂点を含めることができるため、これらの2つの行列の積を一度計算し、両方の行列に各頂点を配置するのではなく、
しかし、私が知る限り、OpenGL ES 2.0シェーダでは行列を一度計算する方法はないようで、2つの行列のうちの1つがglUniformMatrix4fv( )(または統一を設定する別の関数)が呼び出されます。だから、一度CPU上で行列を計算し、次にユニフォームを使ってGPUに結果を出すことだけが行列を計算する唯一の方法のように思えます。そうでない場合は、次のような場合:
gl_Position = uProjection * uMV * aPosition;
これは何度も何度も計算しますが、時間がかかるようです。
だから、どちらの方法で通常標準と見なされますか?それとも、私が完全に行方不明になっているのと違う方法がありますか? OpenGL ES 2.0プログラミングガイドでOpenGL ES 1.1パイプラインを実装するために使用されたシェーダは、1つのマトリックスしか使用していなかったので、もっと使用しましたか?