Вы не можете использовать неподдерживаемое расширение, драйвер вернет ошибку компиляции. Но можете ли вы проверить доступность какого-либо расширения непосредственно из кода GLSL? Есть что-то вроде этого?GLSL: проверьте, поддерживается ли расширение
#version XXX core
#if supported(EXT_some_extension)
#extension EXT_some_extension: enable
#endif
...
UPDATE: Согласно Болас ответ Никол «s. Да, появилась в моей голове тоже, но по какой-то причине, он не работает
#version 150 core
#extension ARB_explicit_attrib_location : enable
#ifdef ARB_explicit_attrib_location
#define useLayout layout(location = 2)
#else
#define useLayout //thats an empty space
#endif
in vec2 in_Position;
useLayout in vec2 in_TextureCoord;
...
Макро «useLayout» всегда устанавливается в пустое пространство, но если бы я оставил только #enable
директиву без условий он будет использовать его (мой драйвер поддерживает его). Похоже, что расширения не определены, это что-то еще (возможно?) (#if defined(ARB_explicit_attrib_location)
тоже не работает)
Nicol Bolas правильный. Вы просто забыли префикс «GL_» для расширения, который определяет ... – derhass
Только что понял. Спасибо за помощь. – TomatoMato