在我的(C++/OpenGL)程序中,我正在加载一组纹理并设置纹理参数,如下所示:
//TEXTURES
glGenTextures(1, &texture1);
glBindTexture(GL_TEXTURE_2D, texture1);
// set the texture wrapping parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// set texture filtering parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
我发现各向异性过滤可以帮助我增强场景的外观。因此,我使用这条线来实现它:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY, 16);
虽然我在我的笔记本电脑(有 AMD GPU 供应商)上编译这行代码没有问题,但我无法使用 Intel(R) HD Graphics 530 (Skylake GT2) 在我的另一台计算机上编译这段代码。具体来说,尝试使用 g++ 编译那段代码会输出以下错误:
error: ‘GL_TEXTURE_MAX_ANISOTROPY’ was not declared in this scope
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY, 16);
更具体地说,在我的 Linux 终端中运行以下命令:
glxinfo | grep -i opengl
揭示了有关我的 GPU 供应商和 OpenGL 支持的以下详细信息:
我知道 ANISOTROPIC FILTERING 已在 中启用ARB_texture_filter_anisotropic
,但老实说,我不知道如何检查我的 GPU 供应商是否支持扩展,如果他支持,我如何才能使用 ANISOTROPIC 过滤?
顺便说一句:我正在使用 glfw3 和 GLAD 加载程序。