GLEW和我的着色器不同意 - 我是否有延伸?

时间:2014-11-27 21:07:18

标签: opengl glsl glew opengl-extensions

我正在通过使用发现着色器,并且遇到了一个奇怪的问题。

我的片段着色器需要ARB_robustness扩展才能正常运行。 GLEW肯定我有这个扩展名:

assert(GLEW_ARB_robustness); // Passes

...但是当我在我的着色器中require时...

#extension GL_ARB_robustness : require

...着色器编译器无法识别它。

0(3) : error C0202: extension ARB_robustness not supported

GLEW已正确初始化,只要我不尝试使用该扩展程序,一切正常。

这个问题可能是什么原因,我该如何解决?提前谢谢。

更新:我在朋友的帮助下嘲笑我,我按照他的建议运行glxinfo,扩展的名称确实出现在输出中。

1 个答案:

答案 0 :(得分:5)

GL_ARB_robustness不是GLSL修改扩展。此扩展的目的是使得与OpenGL API的交互更加健壮,因为可以捕获对内存的越界访问。有点像sprintfsnprintf之间的区别。由于这不是着色器扩展,因此在着色器中声明使用它是没有意义的。

EDIT 除了实际具有健壮性支持外,还必须在启用健壮性属性的情况下创建OpenGL上下文:请参阅https://www.opengl.org/registry/specs/ARB/wgl_create_context_robustness.txthttps://www.opengl.org/registry/specs/ARB/glx_create_context_robustness.txt - 实际启用了健壮性在上下文中,着色器也可以通过。