NPOT纹理和video内存使用情况

我在这个QA中读到,NPOT将像下一个POT大小的纹理一样占用内存。 这意味着它没有给予任何好处比波特质地适当的管理。 (也许更糟,因为NPOT应该更慢!)

这是真的? NPOT纹理是否会浪费像POT纹理一样的内存? 我正在考虑NPOT纹理进行后期处理,所以如果它没有给内存空间的好处,使用NPOT纹理对我来说毫无意义。

也许每个平台的答案可能不同。 我针对移动设备。 如iPhone或Android。 移动GPU上的NPOT纹理是否需要相同数量的内存?

渲染目标是NPOT纹理通常不会遇到问题的less数几个领域之一,因为屏幕分辨率是二的幂是非常不寻常的。

另一篇文章主要谈论非呈现目标纹理。 我也怀疑浪费的空间要求并不完全准确 – 这取决于司机有多聪明。

对于后期处理来说,渲染目标的屏幕大小和半屏尺寸是另一个问题的答案 。 如果与POT大小渲染目标的性能不同,我会非常惊讶。

在NPOT和POT之间渲染目标内存使用的差异可能不值得担心太多。 但是,如果你没有制作一个尺寸的屏幕,那么一个POT尺寸可能是一个不错的select(例如阴影贴图)。

如果你需要节省内存,我建议看纹理而不是渲染目标。 有很多不同的格式可供select不同的质量和尺寸。

这不是一个事实的答案,只是一些猜测。

在较早的日子里(2005年左右),当你将NPOT纹理上传到内存时,你可以看到多lessVRAM(和下一个POT一样多)和mipmapping是错误的,因为边界颜色是从填充区域采样的。

如果你是谷歌,你可以看到最近几年有关于XNA和iOS6的问题,描述这些问题仍然存在。

从我所知的标准描述NPOT接口,但实现(和缺陷)是供应商特定的。 有问题的平衡是在速度和可用性之间。 实施适当的NPOT纹理会使它们慢得多(采样,缩放,平铺,mipmap,VRAM分配等)。

也许你可以自己做一个实验,看看现在的情况。