我编写了一个 C++ 简单应用程序,以找出为什么我不能使用“GL_Texture_2D”作为纹理目标来显示任何 NPOT 纹理。在某些时候,我需要生成一些 Mipmap,因此不能选择使用矩形纹理。
我正在运行 Win7 Pro (x64)、Intel i7-2600K CPU、8GB 内存、NVIDIA Quadro 600。我的 quadro 驱动程序是 296.35,它支持 OpenGL 4.2。
1 工作版本 当使用“默认”纹理时,它运行流畅并显示任何 NPOT 纹理。
glBindTexture( target = GL_TEXTURE_2D, texture = 0 )
2 Broken version 因为,我需要更多的 1 纹理,我需要得到他们的“名字”。一旦我们尝试绑定一个命名纹理,调用 glGenTexture 并将该纹理使用到 glBindTexture 中,我得到的只是一个白色矩形。
glGenTextures(n = 1, textures = &2)
glBindTexture(target = GL_TEXTURE_2D, texture = 2)
我确定我的硬件支持 NPOT 纹理,我检查了 openGL 扩展并列出了“GL_ARB_texture_non_power_of_two”。另外,我使用 and 而不是典型的 Windows 版本的 .
我也在 nvidia 论坛上问过这个问题,在这篇文章中你会找到两个日志文件