2012-04-10 16 views
1

私はPCに移植しているiPhoneゲームを持っています。このゲームではOpenGL ES 2(シェーダ)を使用しています。使用するOpenGLのバージョンを決定します。OpenGL ES 2からOpenGLへの移植

すべてのシェーダをOpenGL 2に移植する必要がありますか(古いハードウェアをサポートしていますか?)または、私はOpenGL 3に移植する必要があります(これはまだよくわかりませんが、シェーダの互換性が高いと思われます)。どちらが簡単に移植できますか?

答えて

2

OpenGL ES 2はデスクトップOpenGL 2のサブセットなので、PC上でもっと高度なテクニック(インスタンシング、テクスチャ配列、ジオメトリシェーダなど)を使用する必要がない場合は、 ESデバイスが聞いたことがないもの)。

デスクトップGL 2で直接モードと固定機能パイプラインを使用できるということは、あなたがすべきことではありません。あなたは完全に順方向互換性のある最新のGL(VBO、シェーダ、...)をOpenGL 2.0でコードすることができます。一方、GL 3.xは以前のバージョンと全く異なるわけではなく、必要に応じて後から追加することができるいくつかの追加機能を提供します。 GL 2または3の間では、現代のVBOシェーダーベースのGLと古い即時モードの固定機能ベースのGLの間でのみ、そして既にGL ES 2.0を使用しているゲームでは正しい決定をしています。

実際には、ES 2が古い属性/可変構文を使用しているため、シェーダはGL 2と3より互換性が高くなります。しかし、それはちょっとしたことにシェイダーを少しでも変更しなければならないので、あなたの決定を本当に動かすものではありません(たとえば、精度修飾子を処理/削除するなど)。