硬件支持非二次幂纹理

7 opengl graphics textures

我一直听到有关在OpenGL应用程序中使用非幂的两种纹理是否安全的有争议的意见.有人说所有现代硬件都完美支持NPOT纹理,有人说它没有,或者有很大的性能影响.

我问的原因是因为我想将某些东西渲染到屏幕大小的帧缓冲区(可能不是2的幂)并将其用作纹理.我想了解在这种情况下性能和可移植性会发生什么.

dat*_*olf 9

自OpenGL-2(很久以前(2004年))以来,任意纹理大小都被指定为OpenGL的核心部分.从那时起设计的所有GPU都支持NP2纹理.唯一的问题是性能有多好.

然而,自从GPU可编程以来,基于固定功能纹理的可预测模式的任何优化,聚集访问变得过时,并且GPU现在具有针对一般数据局部性优化的缓存,并且现在性能也不是问题.实际上,对于P2纹理,您可能需要升级数据以匹配格式,这会增加所需的内存带宽.但是,内存带宽是现代GPU的首要瓶颈.因此,使用略小的NP2纹理实际上可以提高性能.

简而言之:您可以安全地使用NP2纹理,性能也不是什么大问题.