0

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

我需要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他的建议运行,扩展名确实出现在输出中。

4

1 回答 1

5

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

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

于 2014-11-27T23:30:55.430 回答