1

私はAndroid/iPhone用のOpenGLESアプリケーションを構築することを目的としてOpenGLを学んでいます。

私は最初からそれを学ぶので、古いもの(glBeginなど)に触れることなく、新しい仕様を学びたいと思います。残念ながら、チュートリアルに合格して実装すると、例がES2.0と互換性がないこと がわかります。たとえば、これらの優れたチュートリアルの後、ライトの実装方法、PCで機能するものはわかっていますが、モバイルでは機能しません(gl_LightSource後者ではサポートされていません)。

私がやりたいのは、PCでコードを開発し、APIをOpenGL ESでサポートされているコマンドに制限glLightすることです(たとえば、エラーをスローします)。それは可能ですか?

4

4 に答える 4

2

開発にWindowsを使用していると仮定すると、 Google ANGLEを使用して、APIをOpenGLES2.0のみに制限できます。ANGLEは基本的にDirectXをラップしていますが、完全に標準に準拠したOpenGLES2.0インターフェイスを介して使用します。

AMD Radeon GPUを使用している場合は、別のオプションがあります。AMDOpenGL ES SDKは、完全に準拠した2.0インターフェイスも提供します。

どちらの場合も、誤ってOpenGL ES 2.0以外の機能を使用した場合、サポートされていないパラメーターの組み合わせの場合、コードは実行時にコンパイルまたは失敗しません。シェーダーについても同じことが言え、glCompileShader呼び出しは失敗します。

于 2012-04-11T09:56:34.523 に答える
2

Mali GPU OpenGL ESアプリケーション開発ガイドに記載されているように:

OpenGLES1.1およびOpenGLES2.0は、完全なOpenGL標準のサブセットです。OpenGL ES APIを使用する場合、アプリケーションを開発するときに注意しなければならない制限があります。

たとえば、次のOpenGL機能はOpenGLES1.1またはOpenGLES2.0のどちらにも存在しません。

  1. glBeginまたはglEndはサポートされていません。代わりに、頂点配列と頂点バッファオブジェクトを使用してください。

  2. サポートされているラスタライズプリミティブは、点、線、三角形のみです。クワッドはサポートされていません。

  3. 多項式関数の評価段階はありません。

  4. フラグメントのブロックを個々のフラグメント操作に直接送信することはできません。

  5. ディスプレイリストはサポートされていません。

さらに、次のOpenGL機能はOpenGLES2.0にはありません。

  1. 固定機能のグラフィックスパイプラインはサポートされていません。独自の頂点およびフラグメントシェーダープログラムを使用する必要があります。

  2. glFrustumfなどの変換の表示はサポートされていません。独自の変換行列を計算し、それを一様変数として頂点シェーダーに渡し、シェーダーで行列の乗算を実行する必要があります。

  3. glVertexPointerやglNormalPointerなどの特殊な機能はサポートされていません。代わりにglVertexAttribPointerを使用してください。

いつでもOpenGLES仕様を参照して、機能/機能がサポートされているかどうかを確認できます。

于 2012-04-09T14:19:01.577 に答える
2

OpenGL ES 2を学習し、OpenGL ES 2と互換性のある呼び出しと手法のみを使用していることを確認したい場合は、WebGLの学習を検討してください。

WebGLはOpenGLES2とほぼ同じです。javasriptコンソール(firebugまたはchromeの組み込み開発ツールを使用)を利用でき、一部の環境(Windowsではchromeだと思います)では、何かを行うたびに非常に役立つエラーメッセージが表示されます。間違い。それに加えて、テストするWebGLの最大4つの実装(Firefox、Chrome、Safari、Opera)に自動的にアクセスでき、OpengGLをテストするための非常に優れたツールセットがあります。

これは基本的に、私がOpenGLES2を学ぶことができた方法です。

于 2012-04-09T14:53:32.593 に答える
1

http://www.learnopengles.com/には、OpenGLES2.0で利用できる一連の優れたレッスンがあります。PCで開発する場合は、エミュレーターを使用してみることができます。多くの異なるGPUベンダーが、呼び出しをデスクトップGLに変換する独自のエミュレーターを提供しています。ただし、コードが期待どおりに機能することを確認する最善の方法は、実際のデバイスで実行することです。

編集:Android用の新しいエミュレーターはOpenGL ES 2.0をサポートしています:http://android-developers.blogspot.ca/2012/04/faster-emulator-with-better-hardware.html

于 2012-04-09T12:53:59.963 に答える