我看到一些使用256x512等纹理的游戏,这是标准的opengl功能吗?是否得到了所有司机的支持?
我的印象是两者宽度和高度必须相同(并且功率为2)。但它们真的可以是不同的大小(但仍然是2的力量)吗?
编辑:我还想知道512x128与256x256(使用相同内存)有任何性能差异吗?
答案 0 :(得分:3)
检查规格或docs:
对于2次幂纹理并忽略边框width = 2^n
和height = 2^m
,其中n
和m
可以是不同的数字。
width
或height
不能超过GL_MAX_TEXTURE_SIZE
。
就性能而言,如果给定的GL实现在内部使用linear or tiled纹理表示,则您无法提前知道。如果您具有1024x16或16x1024纹理,则平铺实现将无关紧要,因为所有缓存都看到很少(例如)16x16块纹素。假设行主存储,线性实现在16x1024纹理上的缓存命中率要比1024x16好得多。
答案 1 :(得分:0)
纹理的大小没有这样的限制。如果有这样的限制,那么不可能很难将纹理应用到复杂的三维模型中。