7

重い 2D グラフィックスを使用するクロスプラットフォーム デスクトップ アプリケーションに取り組んでいます。頂点シェーダーが必要なため、OpenGL 2.0 仕様を使用します。シンプルでパワフルな 3.2+ コア API が好きです。将来的には 3.2+ コアが選択肢になる可能性があると思います。しかし、最近ではこの機能が一部のプラットフォームで利用できない可能性があるのではないかと心配しています (古いグラフィック カードと最新の Linux ドライバーの欠如 (?) を意味します)。おそらく、将来の移植を容易にするために、OpenGL ES 2.0 のような API を使用する必要があります。

3.2+ コア、カード、および Linux ドライバーの状況はどうなっていますか?

4

5 に答える 5

6

OpenGL ES 2.0 をそのまま使用できます。ES が埋め込みを意味する場合でも、すべての固定機能 (glBegin など) が削除されるため、これは適切なアプローチです。OpenGL 2.x のサブセットを使用しています。したがって、OpenGL ES 2.0 だけを考えてソフトウェアを作成すると、高速でほとんどの場合に動作します。

実際には、OpenGL ES 2.0 とデスクトップ GL には多少の違いがあるかもしれませんが、使用するものではないと思います。拡張機能GL_ARB_ES2_compatibilityがサポートされている場合は、完全な埋め込みサブセットをサポートする「デスクトップ」カードがあります。(4つの関数といくつかの定数)

さて、本当の問題は、ハードウェアを何年間サポートしたいかということです。それらは、GL サポートが非常に貧弱な非常に古いハードウェアがまだたくさんあります。古いものをサポートするのが最善です(OpenGL 2.0はすでに古いです):)

于 2011-06-15T22:03:44.027 に答える
6

古い Intel チップは OpenGL 1.5 のみをサポートします。最近のチップ (約 2 年前から) は 2.1 ですが、パフォーマンスは 1.5 よりも劣っています。Sandy Bridge は、3.3 を実行できるかどうかを指定せずに「OpenGL 3」をサポートすると主張していますが (Damon が提案しているように)、Linux ドライバーは今のところ 2.1 しか実行できません。クローズド ソース ドライバーを使用する最近のすべての Radeons および Nvidia ハードウェアは、3.3 (ジオメトリ シェーダー) をサポートし、400-500 シリーズは 4.1 (テッセレーション シェーダー) をサポートします。

したがって、目標とするバージョンは、1.5 (Sandy-Bridge 以前の Intel がらくたを気にする場合)、2.1 (ほぼすべてのハードウェア用)、3.3 (まともなハードウェアとクローズド ソース ドライバー用)、または 4.1 (最新鋭) です。 )。

古いハードウェアへのフォールバックを容易にするために、バージョン 120 で記述された頂点シェーダーとフラグメント シェーダーと、バージョン 330 で記述されたジオメトリ シェーダーがあります。

于 2011-06-15T10:09:47.763 に答える
2

私は個人的に OpenGL 3.3 を選びますが、オプションで 3.2 と拡張機能のフォールバック (基本的には同じ) を使用します。これは、OpenGL 3.x を使用する最も便利な方法であり、広くサポートされています。

3.1 または 3.0 をターゲットにすることは、砂の橋で実行したい場合を除いて、もはや価値がありません (ハードウェアは 3.3 を実行する能力が非常に高いにもかかわらず、何らかの理由で 3.0 しかサポートしていません)。また、3.1 と 3.0 ではシェーダー コードにかなりの変更が加えられています。私の意見では、多くのバージョンをサポートしたい場合、これはメンテナンスの悪夢です (3.2 と 3.3 ではそのような問題はありません)。

3.2 をサポートするすべてのハードウェアは 3.3 もサポートできます。唯一の障害は、IHV が最新のドライバーを提供していないか、ユーザーが怠惰すぎて更新できないことです。したがって、「3.3 はどこでも機能する」と仮定することはできません。ただし、通常、古いドライバーはARB拡張機能を介して同じ機能を備えています。

于 2011-03-31T12:23:20.493 に答える
1

Mac OS X は現時点で GL-3 コンテキストをサポートしていません。今年の夏には状況が変わるかもしれませんが、それでも GL-2 とエクステンションを使い続けることをお勧めします。

于 2011-03-31T13:29:30.790 に答える
0

ターゲット市場の平均的なマシンによって異なります。正直なところ、OpenGL 3.2+ は最近かなり普及しています。

于 2011-03-31T11:54:14.207 に答える