Opengl GLEW和我的着色器不同意-我是否有该扩展?

Opengl GLEW和我的着色器不同意-我是否有该扩展?,opengl,glsl,glew,opengl-extensions,Opengl,Glsl,Glew,Opengl Extensions,我正在使用着色器发现一个奇怪的问题 我需要ARB\u健壮性扩展,才能使片段着色器正常工作。GLEW肯定我有这个扩展: assert(GLEW_ARB_robustness); // Passes …但是,当我在着色器中需要它时 #extension GL_ARB_robustness : require …着色器编译器无法识别它 0(3) : error C0202: extension ARB_robustness not supported GLEW已正确初始化,只要我不尝试使用该扩展

我正在使用着色器发现一个奇怪的问题

我需要
ARB\u健壮性
扩展,才能使片段着色器正常工作。GLEW肯定我有这个扩展:

assert(GLEW_ARB_robustness); // Passes
…但是,当我在着色器中需要它时

#extension GL_ARB_robustness : require
…着色器编译器无法识别它

0(3) : error C0202: extension ARB_robustness not supported
GLEW已正确初始化,只要我不尝试使用该扩展,一切都可以正常工作

这个问题的原因是什么?我该如何解决?提前谢谢


更新:我在一位朋友的帮助下,在他的建议下运行了
glxinfo
,扩展名确实出现在输出中。

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


编辑除此之外,为了实际具有鲁棒性支持,必须在启用鲁棒性属性的情况下创建OpenGL上下文:请参见和–在为上下文实际启用鲁棒性的情况下,着色器也可以通过。

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


编辑除此之外,为了实际获得健壮性支持,必须在启用健壮性属性的情况下创建OpenGL上下文:请参见和–如果为上下文实际启用健壮性,着色器也可能通过。

是否启用了断言?可能用
if(GLEW_ARB_robustness)printf(“我很健壮!”)替换断言并检查again@ratchetfreak现在,我的程序高兴地夸耀自己的健壮性,然后以同样的方式爆炸:pdo您启用了断言吗?可能用
if(GLEW_ARB_robustness)printf(“我很健壮!”)替换断言并检查again@ratchetfreak现在我的程序高兴地夸耀自己的健壮性,然后以同样的方式爆炸:pI在搜索
texelFetch
安全地脱离纹理边界(返回纯黑色)的方法时找到了这个扩展,所以我认为它应该在着色器中启用。你能详细介绍一下如何以这种方式创建上下文吗?我目前正在Linux上使用SDL2,带有
SDL\u GL\u CreateContext
@Quentin:Use
SDL\u GL\u SetAttribute(SDL\u GL\u CONTEXT\u标志,SDL\u GL\u CONTEXT\u ROBUST\u ACCESS\u标志)
在调用
SDL\u GL\u CreateContext(…)
之前,请参阅以了解更多详细信息。@datenwolf我似乎混淆了健壮性和健壮性缓冲区访问行为。From:“[…]如果在启用鲁棒缓冲区访问的情况下创建上下文,那么texel获取的结果不是未定义的行为,而是零。”我在搜索
texelFetch
安全地超出纹理边界(返回纯黑色)的方法时发现了此扩展,因此我认为它应该在着色器中启用。你能详细介绍一下如何以这种方式创建上下文吗?我目前正在Linux上使用SDL2,带有
SDL\u GL\u CreateContext
@Quentin:Use
SDL\u GL\u SetAttribute(SDL\u GL\u CONTEXT\u标志,SDL\u GL\u CONTEXT\u ROBUST\u ACCESS\u标志)
在调用
SDL\u GL\u CreateContext(…)
之前,请参阅以了解更多详细信息。@datenwolf我似乎混淆了健壮性和健壮性缓冲区访问行为。From:“[…]如果在启用健壮缓冲区访问的情况下创建上下文,则texel提取的结果为零,而不是未定义的行为。”