Почему GL_VERSION отличается от GL_SHADING_LANGUAGE_VERSION и что делать - PullRequest
1 голос
/ 26 мая 2020

при запуске

printf("%s\n", glGetString(GL_VERSION));
printf("%s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));

на моем компьютере выводится:

3.1 Mesa 19.2.8

1.40

Но при попытке получить доступ к функциям из 3.1 в шейдере я получаю следующее сообщение об ошибке:

Поддерживаемые версии: 1.10, 1.20, 1.30, 1.40, 1.00 ES и 3.00 ES

Что меня смущает:

  1. GL_SHADING_LANGUAGE_VERSION не поддерживает многие функции, которые поддерживает GL_VERSION. В чем причина этого? Могу ли я использовать функции 3.1 в своем шейдере?

  2. Согласно сообщению об ошибке моего шейдера, мой компьютер поддерживает 3,00 ES, что отличается от GL_SHADING_LANGUAGE_VERSION. Почему это так?

1 Ответ

1 голос
/ 26 мая 2020

Версия 1.40 GLSL соответствует OpenGL 3.1. См. Информацию о теге GLSL .

Спецификация OpenGL - Реестр Khronos OpenGL

| GLSL  | OpenGL |                |
|-------|--------|----------------|
| 1.10  | 2.0    | #version 110   |
| 1.20  | 2.1    | #version 120   |
| 1.30  | 3.0    | #version 130   |
| 1.40  | 3.1    | #version 140   |
| 1.50  | 3.2    | #version 150   |
| 3.30  | 3.3    | #version 330   |
| 4.00  | 4.0    | #version 400   |
| 4.10  | 4.1    | #version 410   |
| 4.20  | 4.2    | #version 420   |
| 4.30  | 4.3    | #version 430   |
| 4.40  | 4.4    | #version 440   |
| 4.50  | 4.5    | #version 450   |
| 4.60  | 4.6    | #version 460   |

Спецификация OpenGL ES - Реестр Khronos OpenGL ES

| GLSL ES | OpenGL ES |                 |
|---------|-----------|-----------------|
| 1.00    | ES 2.0    | #version 100 es |
| 3.00    | ES 3.0    | #version 300 es |
| 3.10    | ES 3.1    | #version 310 es |
| 3.20    | ES 3.2    | #version 320 es |
...