5

OpenGL ES 1.x では、最初に glTranslate を実行し、次に glRotate を実行して、回転の中心がどこにあるかを変更できます (つまり、指定されたポイントを中心に回転します)。私が理解している限り、OpenGL ES 2.0 では行列計算は CPU 側で行われます。私は IwGeom (Marmalade SDK から) を使用しています。これは、典型的な (おそらく) マトリックス パッケージです。ドキュメントから:

IwGeom の行列は、実質的に 4x3 形式であり、3x3 回転と 3 成分ベクトル変換で構成されます。

この方法で同じ効果を得るのは難しいと思います。平行移動は常に回転後に適用されます。さらに、マーマレードでは、モデル マトリックスも設定します。

IwGxSetModelMatrix( &modelMatrix );

そして、明らかに、回転と平行移動も 1 つの順序で適用されます: a) 回転、b) 平行移動。

OpenGL ES 1.x エフェクトを取得するには?

4

1 に答える 1

4

Marmalades IwGXラップし、シェーダーを必要としないため、その後OpenGLに似ています。GLES 1.0GLES 2.0

glTranslateglRotateビューマトリックスの変更。

あなたはと置き換えることができます

CIwFMat viewMat1 = IwGxGetModelMatrix();
CIwFMat rot; rot.SetIdentity(); rot.SetRotZ(.....); // or other matrix rotation function
CIwFMat viewMat2 = viewMat1; 
viewMat2.PostMult(rot); // or viewMat2.PreMult(rot);
IwGxSetModelMatrix(viewMat2);
// Draw Something
IwGxSetModelMatrix(&viewMat1);

使用するGLES 2.0と、頂点シェーダーでもマトリックスが計算される場合があります。それはCPUよりも速いかもしれません。CPU説明書付きNEONiPhone 4S で同様のパフォーマンス

于 2012-12-28T20:31:57.747 に答える