PCに移植しているiPhoneゲームがあります。ゲームは OpenGL ES 2 (シェーダー) を使用しており、使用する OpenGL のバージョンを決定します。
すべてのシェーダーを OpenGL 2 に移植する (そして古いハードウェアをサポートする) べきですか? それとも、OpenGL 3 に移植する必要がありますか (まだよくわかりませんが、シェーダーはより互換性があるようです)。移植しやすいのはどっち?
PCに移植しているiPhoneゲームがあります。ゲームは OpenGL ES 2 (シェーダー) を使用しており、使用する OpenGL のバージョンを決定します。
すべてのシェーダーを OpenGL 2 に移植する (そして古いハードウェアをサポートする) べきですか? それとも、OpenGL 3 に移植する必要がありますか (まだよくわかりませんが、シェーダーはより互換性があるようです)。移植しやすいのはどっち?
OpenGL ES 2 はデスクトップ OpenGL 2 のサブセットであるため、PC でより高度な技術 (インスタンス化、テクスチャ配列、ジオメトリ シェーダーなど) をゲームで使用する必要がない場合は、2.x で問題ありません。あなたのESデバイスが聞いたことのないもの)。
デスクトップ GL 2 で即時モードと固定機能パイプラインを使用できるという事実は、使用すべきであるという意味ではないことに注意してください。OpenGL 2.0 では、完全に前方互換性のある最新の GL (VBO、シェーダーなど) を問題なくコーディングできます。一方、GL 3.x は以前のバージョンと実際には何の違いもありません。いくつかの機能が追加されているだけで、必要に応じて後で含めることができます。GL 2 または 3 の間で実際の決定はありません。最新の VBO シェーダー ベースの GL と古い即時モード固定関数ベースの GL の間でのみ決定されます。ゲームで既に GL ES 2.0 を使用している場合は、既に正しい決定を下しています。
実際、ES 2 は古い属性/可変構文を使用するため、シェーダーは GL 3 よりも GL 2 との互換性が高くなります。ただし、補足として、とにかくシェーダーを少し変更する必要がある場合があるため (たとえば、精度修飾子の処理/削除)、実際に決定を下すものは何もありません。