0

OpenGL を勉強して以来、ちょっとしたジレンマに陥っています。GL 4.3 (nVidia GTX 550 tiモデル) をサポートする優れたビデオ カードを持っているのに、ラップトップは統合グラフィックス (Intel HD 3000、i5-2410Mからバージョン 3.1 を実行します。このカードが OpenGL 3.2 をサポートできるかどうかはわかりません。

いずれにせよ、コア i3/i5 プロセッサーが OpenGL 3.2+ をサポートするために必要なのはドライバーの更新だけであることが判明したとしても、サポートのためにどこを見ればよいのか、正確に何に注意を払う必要があるのか​​はまだわかりません。 3.x および 4.x。

たとえば、AFAIK GLSL 1.4 は、このlayout(location=x) in blah blah機能を使用するシェーダーをサポートしていません。しかし、GLSL 1.5 はありますか?

C/C++GLSL のプリプロセッサ ディレクティブについてはどうですか? これを使用して、どの機能がどの機能で動作するかを区別できますか? または、これを処理する完全に個別のヘッダー/ソース/シェーダー ファイルを作成することをお勧めしますか (GLSL または C/C++ の場合)。

私は 3.x から 4.x までしかサポートしないつもりなので、これはもっと簡単にできるはずです。

アップデート

私のラップトップで最近ドライバーを更新した後、Nicol Bolas も述べたように、現在 Intel 3000 カードで 3.2 をサポートしていないことがわかりました。したがって、この質問を簡単にするために、バージョン 3.3 以降と比較してバージョン 3.1 で実装できるシェーディング言語機能 (回答または外部 URL) を知りたいと思います。これに関連する OpenGL 固有の C/C++ 機能/機能も歓迎します。

私の目標は、基本的に、私が取り組んでいるプロジェクト (現在 GL 4.0 コンテキストを使用している) と 3.1 コンテキストとの互換性を仲介するために何をしなければならないかを知ることができるようにすることです。

まだ不明な点があれば、適宜更新します。ありがとう。

4

1 に答える 1

1

私が通常行うことは、glcorearb.hと呼ばれるOpenGLレジストリの最新のヘッダーをチェックすることです。1.0以降のすべての関数定義のリストがあり、それらが導入された(そして適格である)それぞれのバージョンにラベルを付ける定義で分割されています。

GLSL情報をどこで入手できるかは100%わかりませんが、古いリリースの仕様は保持されているため、最新のリリースと古いリリースを比較できる可能性があります。

編集:間違ったリンクを修正しました。

プリプロセッサディレクティブなどについては、仕様これを確認してください。

これは役に立ちますか?

于 2012-11-02T21:13:30.600 に答える