10

プログラムで確実に使用できる方法で、OpenGL 実装がサポートする GLSL のバージョンを見つけるにはどうすればよいでしょうか?

GL_SHADING_LANGUAGE_VERSION文字列を取得して解析する最良の方法はありますか? 明確に定義された形式で返されることを信頼できますか? Intel ドライバー1.20は単純に解析できるものを返しますが、nVidia カードは を返します4.20 NVIDIA via Cg compiler(\d+)\.(\d+)( .*)?正規表現によって一致することを信頼できますか? この回答は、そうでないことを示しているようで、 を返しOpenGL ES GLSL ES 1.0ます。

これは正しいですか、および/または他の方法はありますか? 具体的には、少なくとも GLSL 1.20 がサポートされていることを確認したいと考えています。

4

3 に答える 3

17

OpenGL のバージョンとサポートされている GLSL のバージョンの間には、特定のマッピングがあります。

GLSL Version      OpenGL Version
1.10              2.0
1.20              2.1
1.30              3.0
1.40              3.1
1.50              3.2
3.30              3.3
4.00              4.0
4.10              4.1
4.20              4.2
4.30              4.3
4.40              4.4
4.50              4.5

OpenGL バージョンを照会するための明確に定義された API があります。上記のテーブルを GLSL バージョンへのマッピングに使用します (OpenGL-3.3 以降は非常に論理的です)。

さらに、この仕様では、GL_VERSION と GL_SHADING_LANGUAGE_VERSION のフォーマットを次のように定義しています。

バージョン番号から始めます。バージョン番号は、次のいずれかの形式を使用します。

major_number.minor_number | major_number.minor_number.release_number
于 2013-09-26T07:53:28.003 に答える
0

コードから取得する場合は、 with を使用glGetStringしてみてくださいGL_SHADING_LANGUAGE_VERSION

http://www.opengl.org/sdk/docs/man/xhtml/glGetString.xml

于 2013-09-26T07:53:05.670 に答える