サポートされていない拡張機能は使用できません。ドライバーはコンパイル エラーを返します。しかし、GLSL コードから直接拡張機能の可用性を確認できますか? このようなものはありますか?
#version XXX core
#if supported(EXT_some_extension)
#extension EXT_some_extension: enable
#endif
...
更新: NicolのBolasの回答によると。はい、それも頭に浮かんだのですが、なぜかうまくいきません
#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)
も機能しません)