2012-04-09 11 views
1

Android/iPhone用のOpenGL ESアプリケーションを構築する目的でOpenGLを学習しています。通常のOpenGLコンパイルの下でOpenGL ES 2.0を学習する

私は初めから学ぶので、古い仕様(glBeginなど)に触れることなく、新しい仕様を学ぶことを好むでしょう。残念ながら、私がチュートリアルに合格して物を実装すると、例は互換性がなくなります。とES 2.0。たとえば、those excellent tutorialsの後、私はライトを実装する方法を知っています。私のPC上では動作しますが、モバイルでは動作しません(gl_LightSourcenot supported in the latterです)。私がやりたい何

は、私のPC上のコードを開発し、のOpenGL ES(のような、glLightにエラーを投げる)でサポートされているコマンドに APIを制限することです。それは可能ですか?

+0

つまり、「OpenGL ESにAPIを制限しながらPCで開発する」という意味ですか? – Kromster

+0

@KromStern:はい、よく言った –

答えて

2

を学ぶことができましたか本質的にちょうどGoogle ANGLEを使用してのOpenGL ES 2.0。 ANGLEは基本的にDirectXをラップしていますが、完全に標準に準拠したOpenGL ES 2.0インターフェイスを使用しています。

AMD Radeon GPUをお持ちの場合は、the AMD OpenGL ES SDKも完全に準拠した2.0インターフェイスを提供しています。

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

1

OpenGL ES 2.0のレッスンは、http://www.learnopengles.com/で利用できます。 PC上で開発する場合は、エミュレータを使用して試すことができます。多くの異なるGPUベンダーは、コールをデスクトップGLに変換する独自のエミュレータを提供しています。ただし、コードが期待通りに機能するかどうかを確認する最も良い方法は、実際のデバイスでコードを実行することです。

EDIT:Mali GPU OpenGL ES Application Development Guideに述べたようにhttp://android-developers.blogspot.ca/2012/04/faster-emulator-with-better-hardware.html

2

:Android向けの新しいエミュレータは、OpenGL ES 2.0をサポートしてい

のOpenGL ES 1.1とOpenGL ES 2.0は、完全なOpenGLの 標準のサブセットであります。 OpenGL ES APIを使用する場合、アプリケーションを開発するときには に注意する必要があります。例えば

、以下のOpenGL機能が のOpenGL ES 1.1のいずれかまたはOpenGL ES 2.0には存在しない。

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

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

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

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

  5. 表示リストはサポートされていません。また

、以下のOpenGL機能が のOpenGL ES 2.0には存在しない。

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

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

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

あなたはいつもthe OpenGL ES specificationを参照し、機能/機能がサポートされているかどうかを確認することができます。

+0

違いを列挙してくれてありがとう。それはポイントです - 私はサポートされていない機能を使用していないことを確認したいと思います*手動で仕様を参照しないでください –

+0

私はそれのための自動ツールはないと思います。しかし、あなたはいつもあなたのコードをコンパイルするためにopenGL esヘッダを使うことができます。 –

+0

リストにある機能のどれも使用されていない限り、同じコードがOpenGLとOpenGL ESの両方で動作します。 – dtech

2

OpenGL ES 2を学び、OpenGL ES 2と互換性のあるコールとテクニックを使用していることを確認したい場合は、WebGLの学習を検討してください。

WebGLはOpenGL ES 2とほぼ同じです.JavaScriptコンソール(firebugまたはChromeのビルトイン開発ツール)のメリットを得ることができます。あなたが何か間違っているときはいつでも。これに加えて、テストするWebGLの最大4つの実装(firefox、chrome、safari、opera)に自動的にアクセスでき、OpengGLをテストするためのツールがかなり用意されています。

この

は、私はあなたが、あなたがAPIを制限することができ、開発のためのWindowsを使用していると仮定すると、OpenGL ESの2