2012-04-25 9 views
7

私はOpenGLとOpenGL ESの基本的な違いに慣れています。 glBegin、glEnd、no quadsなどはありません。OpenGLとOpenGL ESの互換コードの作成ガイド?

私の質問は、2つのAPIの違いについてではなく、実際にAPIとそのさまざまな実装、特に実装がより多様に見えるESに関して実際に動作するコードを記述することです。

当然のことながら、2つのAPIと同じシンタックスの両方に存在する機能に準拠していることを意味します.OpenGL ES 2が最も一般的な分母であるとはいえ、派手で最先端のものではありません。

+0

興味深い[MaliOpenGLESEmulator](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0511c/BABBIBEA.html)のドキュメントをご覧ください。これは、OpenGL ESからOpenGL ESへの呼び出しを変換するOpenGL ESエミュレータ(MAC/PC用)です。彼らはGL 2.0とGLES 2.0の違いについていくつかの詳細を挙げています。 GLの固定小数点データの不足(明らかに)のように、シェーダの精度指定子や他の小さなものもあります。 – kerim

答えて

2

KhronosによるとOpenGL ESはデスクトップOpenGLのサブセットなので、互換性のあるコードを書くにはOpenGL ESのドキュメントを使うだけです。

引用

http://www.khronos.org/opengles/からのOpenGL®ESは、ロイヤリティフリー、組み込みシステムにフル機能の2Dおよび3DグラフィックスのためのクロスプラットフォームAPI - コンソール、携帯電話、家電製品や自動車を含みます。デスクトップの明確なサブセットで構成されています。

EDIT:Justin Meinersがコメントに指摘したように、細かいところまでは実際にはいくつかの違いがあります。デイヴィッドC.ビショップの答えはこれに関するより多くの情報を持っています。もちろんあなたが新しいのOpenGL ESの互換性の拡張ARB_ES2_compatibilityに興味がある可能性があり

+0

これは当てはまりません。コードの大部分は変更されずに転送されますが、互換性の問題があります。 –

+0

@JustinMeiners:文書化された違いや実装上のバグは不思議ですか?私はこれらの互換性の問題を発見しておらず、khronosのドキュメントはまだ "サブセット"という言葉を使用しています。実際に厳密なサブセットでない場合は、私の答えを更新したいと思います。 –

+0

違いのいくつかの例は、シェーダ精度修飾子、保証サイズの違いです。他の回答の文書ARB_ES2_compatibilityを見ると、実際に互換性を持たせるために必要なすべての変更が記述されています。 –

2

(のOpenGL 4.1のコアに追加)

は、実際には拡張子を使用して、新しい4.1デスクトップのOpenGLのサポートが必要ですが、あなたはそれらを読み、何を参照することができますデスクトップ上でESサポートを取得し、可能な限りESコード内でそのサポートを回避する必要がありました。主に、浮動小数点精度などのシェーダの一部が古いデスクトップOpenGLバージョンと互換性がないものがいくつかあります。

ARB_ES3_compatibility(OpenGL 4.3のコア)もありますが、OpenGL ES 3.0以降では無視しても安全です。