检查是否已启用 GLSL 扩展?



有没有办法检查GLSL扩展是否已启用? 也就是说,在当前编译单元中的代码块之前,某处有一个#extension <extname> : enable指令:

#extension GL_OES_standard_derivatives : enable

像这样:

#if extension_enabled( GL_OES_standard_derivatives )
// do stuff with fwidth()
#else
#error Code won't work without GL_OES_standard_derivatives!
#endif

每个具有GLSL语言对应项的OpenGL扩展(即:可以进入#extension声明的内容(都包含一个用于该扩展名称的#define,如果扩展已启用,则该扩展将设置为1。例如,ARB_shader_image_size扩展是针对 GLSL 的,因此如果在着色器中成功启用扩展,GL_ARB_shader_image_size将被#defined 到1

因此,您可以使用#ifdef GL_ARB_shader_image_size来封装需要扩展的代码。

最新更新