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

时间:2013-08-26 15:41:09

标签: 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_ANISOTROPY_EXT, &max);
std::cout << max << std::endl;

我机器上此部分的输出是:

16

所以看起来支持16的各向异性过滤,但glewIsSupported以及glew扩展字符串则相反。

是否正在检查GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT并且检查错误,或者发生了什么不同?

2 个答案:

答案 0 :(得分:2)

显然有一个known bug in glew即使在OpenGL 3+上下文中也使用glGetString(GL_EXTENSIONS)而不是glGetStringi取代了OpenGL 3+中的扩展查询。

因此,在修补之前,扩展查询必须是done manually

答案 1 :(得分:0)

解决鸡和蛋问题的一种可能方法是调用glGetString(GL_EXTENSIONS)并检查GL_INVALID_ENUM的glGetError()。只有在GL_EXTENSIONS不可用的情况下才应该这样做。如果遇到此错误,请尝试glGetStringi。别忘了在这里查看错误。 GLEW没有(从版本1.10开始:/)。