OpenGL各向异性过滤支持,矛盾检查结果

OpenGL各向异性过滤支持,矛盾检查结果,opengl,Opengl,当检查是否支持各向异性过滤时,我得到了相互矛盾的结果 if(glewIsSupported("GL_EXT_texture_filter_anisotropic") || GLEW_EXT_texture_filter_anisotropic) { std::cout << "support anisotropic" << std::endl; } GLfloat max; glGetFloatv(GL_MAX_TEXTURE_MAX_ANISO

当检查是否支持各向异性过滤时,我得到了相互矛盾的结果

if(glewIsSupported("GL_EXT_texture_filter_anisotropic") || GLEW_EXT_texture_filter_anisotropic) {
        std::cout << "support anisotropic" << std::endl;
    }

GLfloat max;
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &max);
std::cout << max << std::endl;
因此,似乎支持16的各向异性过滤,但
glewIsSupported
以及glew扩展字符串则相反

检查
GL\u MAX\u纹理\u MAX\u各向异性\u EXT
是否足够,glew检查是否错误,或者是否发生了一些不同的情况?

显然存在这样一种情况,
glGetString(GL\u扩展)
甚至在OpenGL 3+上下文中使用,而不是取代OpenGL 3+中扩展查询的
glGetStringi


因此,在修补之前,必须执行扩展查询。

解决鸡和蛋问题的一种可能方法是调用glGetString(GL_扩展)并检查glGetError()中的GL_INVALID_枚举。只有在GL_扩展不可用的情况下,才应提出此问题。如果遇到此错误,请尝试glGetStringi。别忘了检查这里的错误。GLEW没有(从1.10版开始:/)。

调用这些函数时,GLEW是否正确初始化?@Nicolas是,
glewInit
with
glewExperimental=GL\u TRUE
返回
GLEW\u OK
@JustinMeiners字符串的意思是哪一个?我很确定我的图形卡支持各向异性过滤。@AdamS你说的
glewIsSupported
和OpenGL extensions字符串都不存在,对吗?如果是这样,我会相信这些,我不认为
glGetFloatv
保证不会给你一些价值。@AdamS哇,这一定是glew中的一个bug。好吧,这是值得信任的,也许你可以编写自己的扩展chec。这不完全是一个bug,而是OpenGL遗留下来的结果。这归结为一种鸡和蛋的情况<代码>glGetStringi(…)仅通过非OpenGL 3.0本机平台上的扩展公开;现在,要确定是否存在此扩展,必须首先查询扩展字符串。在OpenGL 3.x核心上下文中,以旧方式查询
GL\u扩展
字符串是无效的。这是另一种出现的矛盾情况,比如必须在Win32上创建渲染上下文,以便加载扩展以创建渲染上下文。。。
16