4

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

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足够,是否检查错误,或者发生了什么不同的事情?

4

2 回答 2

2

显然,即使在 OpenGL 3+ 上下文中也使用glew中的一个已知错误,而不是替换 OpenGL 3+ 中的扩展查询。glGetString(GL_EXTENSIONS)glGetStringi

所以在修补之前,扩展查询必须手动完成

于 2013-08-26T17:34:29.190 回答
0

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

于 2013-10-14T20:25:58.010 回答