何が“で”および“ out” OpenGL-ESの? (OpenGLからの移植)

StackOverflow https://stackoverflow.com/questions/272970

質問

OpenGL-ESに関するすべてのドキュメントには、" OpenGL-ESの効果に関する何かがOpenGLに似ていますが、多くのものはありません。たとえば、glBeginやglEndはありません。

OK、それは素晴らしい。では、どのELSEが存在しないのでしょうか?または、 in のリストがありますか?それとも移植ガイドですか?

(具体的には、既存のGLアプリをiPhoneに移動しようとしていますが、必ずしもQをiPhoneに制限する必要はありません。)

他のヒント

あなたの質問に答える際の問題の一部は、多くのものが欠けていることであり、多くの場合、それはめったに使用されないか適用できないビットフラグのセットです。違いを説明する最適なドキュメントは、実際には実装ヘッダーです。

私が取り組んでいるフレームワークでは、デスクトップとiPhoneの間で完全にクロスプラットフォームにすることを決めました。私がそれを理解する際に取るアプローチは、OpenGLでコードを記述し、どこで壊れるのかを確認することです。次に

を見てください

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/ システム/ライブラリ/Frameworks/OpenGLES.framework/Headers/ES1/gl.h

およびそれを比較

/Developer/SDKs/MacOSX10.5.sdk/ System / Library / Frameworks / OpenGL.framework / Versions / A / Headers / gl.h

これらのヘッダーは非常に単純でわかりやすいです。

これまでに発見した主な違いは、GLdoubleがないことです(glOrthoやglFrustumなどのGLdoubleを使用するものには、GLfloatバージョンglOrthofとglFrustumfがあります)。また、何らかの理由でgluPerspectiveもgluPerspectivefもありません。

代替品のドロップ:

void gluPerspective( GLfloat fovy, GLfloat aspect, GLfloat zNear, GLfloat zFar )
{
   GLfloat xmin, xmax, ymin, ymax;

   ymax = zNear * tan(fovy * M_PI / 360.0);
   ymin = -ymax;
   xmin = ymin * aspect;
   xmax = ymax * aspect;

   glFrustumf( xmin, xmax, ymin, ymax, zNear, zFar );
}

glBeginとglEndがないため、glDrawArrayまたはglDrawElements(推奨)を使用してすべてを行う必要があります。簡単で汚い例:

void draw( short x, short y, short w, short h )
{
    const GLshort t[8] = { 0, 0, 1, 0, 1, 1, 0, 1 };
    const GLshort v[8] = { x, y, x+w, y, x+w, y+h, x, y+h };

    glVertexPointer( 2, GL_SHORT, 0, v );
    glEnableClientState( GL_VERTEX_ARRAY );

    glTexCoordPointer( 2, GL_SHORT, 0, t );
    glEnableClientState( GL_TEXTURE_COORD_ARRAY );

    glDrawArrays( GL_TRIANGLE_FAN, 0, 4 );
}

Appleのテクニカルノート TN2230" OpenGL ES for iPhone OSの最適化&quot ; 移植に役立つその他のヒントについて。

これまでの移植はかなり苦痛を感じませんでした。アプリでかなり高度なOGLを実行したり、完全にサポートされていない機能を使用したりしない限り、ビルドボタンを押すと問題が見つかります。 gl.hファイルには少し。実際、ESに移植すると、最適化された適切なレンダリングコードを書く必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top