互換性とパフォーマンスを考慮して、OpenGLのどのバージョンをコーディングする必要がありますか?[閉まっている]


19

OpenGLの仕様が更新されると、機能が追加されるだけです。したがって、理論的には、コアプロファイルと互換性プロファイルをサポートする最新かつ最高のハードウェアは、非常に古いOpenGL1.1コードを正常に実行するはずです。これは事実であることが判明しました。私はOpenGL1.1の学習に12か月を費やし、それをかなり理解しています。

私はそれらの派手な新しいOpenGL4.2の本のいくつかの章を読みました。私が依存するほとんどすべての機能は非推奨になりました(表示リストなど)。これらすべてのことを行うより良い方法があると仮定できます。

1.1がすべての最新のハードウェアで完全にサポートされる可能性が高いと考えてみましょう。1.1は1992年にリリースされました。20 歳のPCをサポートするためだけに難しい方法をコーディングしているわけではありません。:-pほとんどのゲーマーが5年ほど前のミッドレンジで底を打つハードウェアを実行していると仮定するのは合理的だと思います。

新しいメソッドは、一般的に次の2つのいずれかになるように設計されていると思います。パフォーマンスの向上またはコーディングの容易さ。私はどこかでその両方ではないことを読んだ!XD

〜5年前のハードウェアで最も広くサポートされているOpenGLのバージョンは何ですか?これらの考慮事項を考慮して、どのバージョンを使用するのが最も理にかなっていますか?

回答:


19

あなたの考慮事項を考えると、各バージョンのOpenGL仕様がいつリリースされたかを確認するために飛び出し、また私が見たものからの全体的な洞察を考慮しました。

FBO、VAOなどを導入したOpenGL 3は、ほぼ5年前の2008年7月11日にリリースされました。もちろん、その日付以降のすべてのカードがすぐにOpenGL 3を利用できるとは期待できません。

Steam Hardware Surveyを見ると、40%がDirectX 10です。OpenGL3には同様のグラフィックカードが必要であるため、ほとんどのDirectX 10カードは少なくともOpenGL 3を実行できると想定するのが一般に安全です。

OpenGL 3は、GeForce 8xxxシリーズまでさかのぼってカードでサポートされています。GeForce8xxxシリーズは、思い出すとかなり人気がありました。また興味深いのは、Intel HD 2000および3000グラフィックス(Sandyブリッジ)はOpenGL 3までしかサポートしていないため、これらを対象とする場合はそのことに留意してください。

結論:OpenGL 3は良い賭けです(また、ターゲットオーディエンスに応じて、ほとんどのゲーマーはおそらく平均よりも優れたハードウェアを持っていることを覚えておいてください)。


これは素晴らしい答えです。まさに私が探していた洞察でした。

3
「また興味深いのは、Intel HD 2000および3000グラフィックス(Sandyブリッジ)がOpenGL 3までしかサポートしていないことです」注:GL 3.1のみをサポートしています(Intelは気にしないので)。また、Intelであるため、「サポート」は一粒で受け止められるべきです。ハードウェア 3.3をサポートできます、それを公開しません(再び、彼らは気にしません)。IntelハードウェアでOpenGL 3.xを使用することはまったく避けます。確かに、Intelハードウェアをベースにしたシェーダーベースの操作は避けたいと思います。
ニコルボーラス

その後、質問が提起されます。インテルのハードウェア市場はどの程度飽和していますか?とにかく、Intelグラフィックスを気にせずにOpenGL3.xを使用する価値はありますか?それとも、実際に問題になるほど十分な数のIntelグラフィックハードウェアがありますか?

1
1つの問題はOSXです。最新リリース10.7.xはOpenGL 3.2のみをサポートし、10.6.xは3.0(または2.xさえ)のみをサポートします。10.5.xはカードによって大きく異なり、1.3、1.5、2.0が可能です。これらのシステムは、ユーザーがアップデートのためにAppleにお金を払わない限り、これらのOpenGLバージョンに永久にとどまります。OpenGLを更新するOSX用のビデオカードドライバーの更新などはありません。他の問題は、ネットブックで使用されているドギーの組み込みIntelチップセットの一部です。それらの多くは、OpenGL 2.0以降のみです。
デビッドC.ビショップ

そして、あなたはまだOpenGL 1.1を揺るがしている3DSを持っています
...-kirbyfan64sos

8

ここから始めます:http : //store.steampowered.com/hwsurvey

たとえば、4cpusをターゲットにした場合、45%のユーザーしかヒットしませんが、2で作業すると、90%近くになります。


1
OpenGLはどこで見ましたか?DirectXのみが表示されます(Windowsのみを対象とする場合は注意が必要です)。
DMan

グラフィックカードの内訳に基づいてレッグワークを行うと推測しています
ジミー

ええ-OpenGLについては何も知りませんでしたが、カードモデルから取得できます。実際、DirectXバージョンとOpenGLにはかなりの相関関係があると思います。
サーモンムース

3

答えは、言及した期間内にリリースされたIntelグラフィックスで実行する必要があるかどうかに依存します。

もしそうなら、OpenGL 2.1(あるいは1.5)に自分自身を制限し、そうでなければ3.xは合理的だと思われます。

はい、古いバージョンのOpenGLは引き続き実行されます。はい、ある観点から見ると、よりシンプルに見えるかもしれません。物事が形を変えて曲がるのは、物事をやろうとするときであり、物事をサポートしようとするときです。OpenGL 1.1は難しい方法ではありません-特定の結果を達成したい場合、それは不可能な方法であることが多いです。


1.1がしばしば不可能な理由の例を追加すべきだと思います。1.1機能に簡単に関連付けることができるのは、複数のブレンドパスです。FBOがなく、ほとんどの場合、コンポーネントテクスチャあたり8ビットに制限されているため、ブレンドパスが積み重なると、精度が低下し始めることがわかります。3/4/5パスを使用すると、最終結果は16ビットまたは8ビットグラフィックスのように見えます(またはそれよりも悪くなります)。しかし、1.1の機能セットを使用して、より高いレベルの効果(基本的なマルチテクスチャは私たちがよく知っているもの)をシミュレートするために、複数のパスが必要になることがよくあります。
マキシマスミニマス

Intel HDグラフィックス(Sandy / Ivy Bridge)でさえOpenGL 3.1のみをサポートしており、それは1年前です。安価な(または低電力の)ラップトップをサポートするかどうかにかかっています。
スティーブハワード

2
@SteveHoward:Intel HD GraphicsはOpenGL 4をサポートできます。ソース
Janus Troelsen

この記事は、コメントを投稿してから約3か月後のものです。
スティーブハワード

1

まず、互換性プロファイルがある場合(通常はそうです)、ディスプレイリストなどのOpenGL 1.1のものは新しいコンテキストで引き続き機能します。唯一の問題は、コンソール固有のグラフィックライブラリの1つであるOpenGL ES(これらは一般にOpenGL ESと同様にOpenGLが削除されます)またはWebGL(とにかくかなりの手直しが必要)に移植する予定がある場合です。

個人的には、頂点/フラグメントシェーダーとVBOを使用することをお勧めします。それらは現在かなり長い間存在しており、パフォーマンスが大幅に向上しています。クラスで関数をラップする場合、おそらく単純なフォールバックを提供することさえできます。

頂点配列オブジェクトなどをエミュレートすることもできます。


0

5年前のハードウェアでは、一部の人々はまだXPを使用しています。それは、DirectX 10またはOpenGL 3でコーディングすることさえできないことを意味します。そして、OpenGL 3には、フレームバッファーなど、本当に恩恵を受ける多くの機能があります。正直なところ、これらの機能を含めることができるように、システム要件を少し上げました。


8
-1:「5年前のハードウェアでは、一部の人々はまだXPを使用しています。これは、DirectX 10またはOpenGL 3でコーディングすることさえできないことを意味します。」違います。OpenGL 3.x はXPで問題なく動作します。API /ドライバーの理由により、XPから制限されているのはD3D10のみです。ハードウェアとは関係ありません。
ニコルボーラス

0

3Dソフトウェアでは、「ベースライン」グラフィックAPIバージョンと「最新かつ最高の」APIバージョンの両方のコードパスを持つことが一般的です。

一般的なベースライングラフィックバージョンはD3D9とOpenGL 2.1 / GLSL 120です。古いハードウェアはそれらをサポートしていないため、どちらもジオメトリシェーダーが特に不足しています。

別のベースラインオプションはANGLEです。これはGLES 2.0に加えて、D3D9、デスクトップOpenGL、およびモバイルGLES 2.0で実行されるEGLです。これは、Google ChromeとChromeとFirefoxのwebglのバックエンドです。

http://code.google.com/p/angleproject/

選択した「最新かつ最高の」バージョンに関しては、それはより困難です。ターゲットとする最新のAPIとハードウェア、より見栄えの良い機能をサポートできますが、最新かつ最高のハードウェアでのみです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.