Answers:
在现代集成和离散GPU上坚持“二次幂”纹理是否具有性能优势?
大多数现代GPU支持非两种(NPOT)纹理的幂并很好地处理它们。性能下降很少。但是没有什么要考虑的问题:
使用NPOT纹理时,与下一个POT纹理一样,它会占用更多的RAM空间。从技术上讲,您只是浪费了可用于在其中放置东西的空间。
与下一个尺寸的POT相比,NPOT纹理的处理速度可能明显慢(在OpenGL 2.1中,性能下降了30%);
较早的GPU和板载/片上GPU并不那么先进,它们通常支持NPOT纹理,但支持速度很慢且笨拙。
即使是较老的GPU也可能根本拒绝接受/显示NPOT纹理。
可能会由于mip-map插值而产生边缘瑕疵,您的25x25纹理可能带有黑色条纹,并在其中添加了像素以将其填充为32x32大小。
PS我不确定移动设备,关于POT纹理可能还有更多限制。
非二次方纹理有什么优势?
据我所知,只有两个优点:
是否有大量台式机用户没有支持非二次幂纹理的卡?
据我所知,并在PC上进行了测试-是的。其中包括大部分的降速/较小的错误GPU和少量根本无法处理NPOT的卡。
在较旧的硬件上,NPOT纹理存在局限性。如该OpenGL Wiki所述,某些较旧的硬件要求NPOT不具有mipmap,压缩纹理要求对齐4x4像素,但新硬件应能完美处理。
以我的经验,如果使用NPOT纹理而不是POT,那么即使是相对较新的硬件也会对性能造成重大影响。我不知道问题是什么;在渲染状态的某种组合中,渲染实际上是在软件中完成的。因此,除非您有充分的理由,否则我建议您仍然尝试尽可能多地使用POT。
关于为什么使用NPOT而不是POT的原因-如果您具有NPOT尺寸的图像,例如1600x1200,则使用2048x2048像素的表面会浪费大量视频内存。
2种纹理的强大功能可在任何类型的GPU上将性能提高约30%,不仅旧的GPU(高端GPU与普通GPU的区别要快30%),它们还需要30%的内存,但所需的内存却更少,它们可以提高质量为特定距离提供适当的纹理大小,它的工作原理类似于对纹理进行抗锯齿。