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

Que*_*tin 0 opengl glew glsl opengl-extensions

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

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

assert(GLEW_ARB_robustness); // Passes
Run Code Online (Sandbox Code Playgroud)

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

#extension GL_ARB_robustness : require
Run Code Online (Sandbox Code Playgroud)

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

0(3) : error C0202: extension ARB_robustness not supported
Run Code Online (Sandbox Code Playgroud)

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

可能是这个问题的原因,我怎么能解决它?提前致谢.

更新:我在朋友的帮助下嘲笑我,我glxinfo继续他的建议,扩展的名称确实出现在输出中.

dat*_*olf 5

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

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