5

我正在使用 OpenGL 纹理开发 Mac 应用程序,这些纹理是使用 glTexImage2D 从磁盘上的图像文件加载的。

根据文档,对于 OpenGL 版本 >= 2.0,纹理可以是任意大小。(对于 <2.0 的版本,x 和 y 维度都必须是 2 的幂。)

但是,如果我的图像尺寸不是 4 的偶数倍,我的纹理会很差。我已经搜索和搜索,但找不到有关此要求的任何文档。事实上,“红皮书”明确指出纹理尺寸可以是版本 >= 2.0 的任何值。

我错过了什么?

而且,将纹理转换为下一个最大的二维幂是否有性能优势?我的应用程序需要 Mac OS 10.6.6 或更高版本,它应该可以在任何 Intel Mac 上运行。一些早期的英特尔 mac 具有非常“简陋”的图形硬件。

任何帮助将不胜感激。

4

2 回答 2

5

在 OpenGL 版本 >= 2 中,对尺寸为 2 次方的普通纹理的约束仍然存在。但是支持的纹理目标 GL_TEXTURE_RECTANGLE,它支持任意尺寸,但不会进行 mipmaping。

尺寸没有限制为 4 的倍数,但是我怀疑您可能设置了 glPixelStore(GL_UNPACK...) 参数,可能由程序的其他部分设置,这会导致这种行为。

于 2011-01-27T18:01:52.430 回答
0

你的纹理是什么格式的?S3TC 压缩纹理格式在 4x4 切片上运行,因此如果尺寸不是 4 的倍数,则可能无法正常工作或出现视觉伪影。

于 2011-01-27T19:33:23.870 回答