OpenGL纹理的宽度和高度必须相同吗?

时间:2011-08-09 18:57:27

标签: opengl

我看到一些使用256x512等纹理的游戏,这是标准的opengl功能吗?是否得到了所有司机的支持?

我的印象是两者宽度和高度必须相同(并且功率为2)。但它们真的可以是不同的大小(但仍然是2的力量)吗?

编辑:我还想知道512x128与256x256(使用相同内存)有任何性能差异吗?

2 个答案:

答案 0 :(得分:3)

检查规格或docs

对于2次幂纹理并忽略边框width = 2^nheight = 2^m,其中nm可以是不同的数字。

widthheight不能超过GL_MAX_TEXTURE_SIZE

就性能而言,如果给定的GL实现在内部使用linear or tiled纹理表示,则您无法提前知道。如果您具有1024x16或16x1024纹理,则平铺实现将无关紧要,因为所有缓存都看到很少(例如)16x16块纹素。假设行主存储,线性实现在16x1024纹理上的缓存命中率要比1024x16好得多。

答案 1 :(得分:0)

纹理的大小没有这样的限制。如果有这样的限制,那么不可能很难将纹理应用到复杂的三维模型中。