Поиск поддерживаемой версии GLSL

как лучше всего найти версию GLSL, которую поддерживает реализация OpenGL, таким образом, чтобы ее можно было надежно использовать программно?

- Это лучший способ получить GL_SHADING_LANGUAGE_VERSION string и попытаться разобрать его? Можно ли полагаться на то, что он будет возвращен в четко определенном формате? Мой драйвер Intel возвращает 1.20 который достаточно прост для анализа, но моя карта nVidia возвращает 4.20 NVIDIA via Cg compiler. Можно ли ему доверять, чтобы соответствовать (d+).(d+)( .*)? регулярное выражение? ответ кажется, укажите иначе, возвращаясь OpenGL ES GLSL ES 1.0.

все это правильно, и/или есть другой способ? В частности, я хочу проверить, чтобы по крайней мере GLSL 1.20 поддерживался.

2 ответов


существует определенное сопоставление между версией 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

существует четко определенный API для запроса версии OpenGL. Используйте таблицу выше для сопоставления с версиями GLSL (после OpenGL-3.3 это очень логично).

кроме того, спецификация определяет формат GL_VERSION и GL_SHADING_LANGUAGE_VERSION в

начните с номера версии. Номер версии использует один из них формы:

major_number.minor_number | major_number.minor_number.release_number

Если вы ожидаете получить его из кода, попробуйте использовать glGetString с GL_SHADING_LANGUAGE_VERSION

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