2012-03-03 10 views
0

私は、新しいOpenGL拡張と、必要なハードウェアと、必要なOpenGLのバージョンについて少し混乱しています。ARB_shader_image_load_store - OpenGLのどのバージョンとどのハードウェアが必要ですか?

特にARB_shader_image_load_storeについてです。 http://www.opengl.org/registry/specs/ARB/shader_image_load_store.txt

私が理解したように、これは、OpenGL 4.2の機能ですが、それが書かれているOpenGLの依存関係にある:

This extension interacts trivially with OpenGL 4.0 and ARB_sample_shading. 

よう

This extension is written against the OpenGL 3.2 specification 
(Compatibility Profile). 

This extension is written against version 1.50 (revision 09) of the OpenGL 
Shading Language Specification. 

OpenGL 3.0 and GLSL 1.30 are required. 

やものを下にさらにこれらの事は何を意味するのですか?このような拡張機能を使用するには、どのハードウェアとOpenGLのバージョンが必要ですか?

+0

これは、以前は同じ名前のEXTであったため、4.2のコアに昇格しました。しかし、とにかく、私はバージョンをチェックして回りません。拡張機能のサポートを確認してください。 – harold

答えて

6

これらのことはどういう意味ですか?

さて、1つずつ取り上げましょう。

私たちが始める前に、いくつかの基本的な情報。 OpenGLの仕様は、コアでも拡張でも、は何かを実行するハードウェアについてはには関係ありません。彼らはそれに興味がありません。彼らはハードウェアを定義しません。あなたは拡張仕様を見ることができず、それが機能する先験的なハードウェアを知ることはできません。その情報を見つけたい場合は、間違った場所を探しています。

さらに、拡張仕様については何かを理解する必要があります。 OpenGL拡張はdiffのようになります。それを孤立して読むことはできません。 OpenGL拡張は、OpenGL仕様を変更するドキュメントです。

この拡張は、OpenGL 3.2仕様 (互換性プロファイル)に対して書かれています。

この拡張は、OpenGL シェーディング言語仕様のバージョン1.50(リビジョン09)に対して書かれています。

diffファイルは、どのファイルにパッチを当てるか正確に分からない限り、まったく役に立たないのですか?これはOpenGLの場合と同じことです。拡張仕様では、OpenGL仕様のセクションおよび段落番号を参照します。しかし、... 多くの OpenGL仕様のバージョンがあります。どちらがそれについて話しているのですか?

したがって、すべての拡張機能は、参照している物理的な文書を記述する必要があります。したがって、この拡張が「セクション2.14.5の後に新しいサブセクションを追加する、サンプラー、106ページ」は、OpenGL 3.2仕様のページ106、セクション2.14.5、互換性プロファイルを意味します。

同じことがGLSL言語仕様になります。

OpenGL 3.0とGLSL 1.30が必要です。

さて、拡張子が特定のバージョンは、この拡張のサポートが可能である最小バージョンであることを意味するものではありませんに対してを書かれているという理由だけで。実装は、以前のバージョンで理論的にサポートすることができます。

この文は、の可能な最小限のバージョンはであることを示しています。

これはハードウェアの問題ではありません。 の言語の問題です。この拡張が2.1で利用できない概念を参照しているため、3.0が最小である理由があります。整数画像フォーマットなど。次の部分でこれについてもう少し詳しく話します。

この拡張はX.

と対話する声明「と相互作用」仕様のオプション部分に語っています。つまり、「X」とこの拡張子がの場合は、両方ともがサポートされている場合、この仕様の特定の段落も存在します。

たとえば、ARB_shader_image_load_storeは、「この拡張はARB_separate_shader_objectsとやりとりします」と述べています。下を見ると、「ARB_separate_shader_objectsの依存関係」というセクションがあります。これは、ARB_separate_shader_objectsが利用可能なときに変更される特定の言語をリストします。

"interacts trivially with X"ステートメントは、相互作用が一般的に "Xへの参照を削除"ステートメントであることを単に意味します。たとえば、ARB_tessellation_shader/4.0の依存関係のセクションでは、「OpenGL 4.0とARB_tessellation_shaderがサポートされていない場合は、テッセレーション制御シェーダと評価シェーダの参照を削除する必要があります。

"trivially"という言葉は、Xがサポートされていない場合、Xの実装が無視されていることは明らかです。

ARB_separate_shader_objectsとの対話は、初期深度テストの仕組みを再定義する必要があるため、簡単です。

「と対話する」は、「必要な」表現に代わるものです。 ARBは、4.1に対してそれを書いただけで、4.1が必要であることをしっかりと述べることができました。そうすれば、これらのもののどれもオプションではないので、ほとんどの "相互作用する"句は存在しないであろう。

しかし、ARBは、GL 3.0の概念をサポートできるハードウェアの可能性を認めたかったが、他のものはサポートしていなかった。たとえば、モバイルスペースでは、shader_image_load_storeのサポートはtessellation_shadersの前に来る可能性があります。そのため、この拡張機能には、多くの「相互作用」句とかなり低い「必須」GLバージョンがあります。デスクトップ上では、バージョン番号が4.0未満のARB_shader_image_load_storeの実装が見つかりません。

このような拡張機能を使用するには、どのハードウェアとOpenGLのバージョンが必要ですか?

これらのドキュメントでは、そのことについては説明しません。 ARB_shader_image_load_store は、実装バージョン3.0以上で利用可能です。

どのハードウェアがどの拡張機能をサポートしているかを調べる最も簡単で簡単な方法はuse the OpenGL Viewerです。それはこの情報のかなり最新のデータベースを持っています。

また、いくつかの常識を使用することができます。 ARB_separate_shader_objectsを使用すると、オンザフライでプログラムを組み合わせてマッチさせることができます。これは、Direct3D 8以降D3Dがやっていることです。明らかに、ハードウェアになる可能性があります。 OpenGLは単ににしませんでした。今まで。

明らかに、ARB_separate_shader_objectsはハードウェアベースではありません。

同様にARB_shading_language_pack420には、D3Dが永遠に持っていた多くの機能が含まれています。ここでも特別なハードウェアサポートが必要なものは何もありません。

明らかに、ARB_tessellation_shaderはになります。には特殊なハードウェアサポートが必要です。 2つの新しいシェーダステージを紹介します。 ARB_shader_image_load_storeは同じ方法です。基本的な新しいハードウェア機能を導入しています。今や、以前のハードウェアでは可能性があります。しかし、それは起こりそうにない。

これは、すべての拡張で常にそうとは限りません。しかしそれはほとんど真実です。

OpenGLのバージョン番号を知っておくべきもう一つのことは、 3.0以来、ARBは厳密なバージョン番号付けスキームを守ることができました。

主なバージョンは基本的なハードウェアの変更を表します。 3.xから4.xはD3D10からD3D11に直接相当します。マイナーバージョンはどちらか(ARB_shader_image_load_store 任意の4.0の実装に実装されている可能性が、ARB直前に撮ったAPIよりよい作る(ARB_texture_storage、私たちは延滞長いた何かを参照)、または同じハードウェアレベルのために以前に露光されていないハードウェア機能を公開します拡張機能を書き込むまで4.2)。

したがって、3.0を実行できるハードウェアがある場合、3.3も実行できます。ドライバがなければ、ドライバメーカーは自分の仕事をしていません。 4.0から4.2まで同じです。

+0

非常に詳細で良い答えです!有難うございます! – Mat

+0

私はこのテキストをOpenGL wikiに載せるべきだと思います。 – datenwolf

+0

@datenwolf:[完了](http://www.opengl.org/wiki/OpenGL_Extensions#How_to_read)それはテキストの100%ではありませんが(いくつかの新しいマテリアルを含んでいますが)、ポイントを取得します。 –

0

これらは、拡張仕様を正しく読み込む方法を示しています。仕様書を読むには、拡張機能が他のOpenGL機能とどのように相互作用するかを知っておく必要があります。そして、 "ExtensionがOpenGL 4.0と些細なやりとりをする"と言いますと、OpenGL 4.0の主な機能であるARB_sample_shadingと、その拡張がどのように動作を変えるのかを意味します。

OpenGLコア4.2仕様であるため、すべてのShader Model 5/Direct3D11ハードウェア(Radeon HD5xxx以上、GeForce 400以上)でARB_shader_image_load_storeをサポートする必要があります。

OpenGLのバージョンが4.2以上であるかどうかを確認するか、ARB_shader_image_load_store拡張機能の有無を確認できます。

+0

ねえ、この明確化のために感謝! OpenGLバージョン> = 4.2が必要な場合は、なぜ 'OpenGL 3.0とGLSL 1.30が必要ですか? ' – Mat

関連する問題