有没有工具将PVR纹理分割成一组瓷砖?

时间:2011-05-18 12:29:13

标签: iphone opengl-es pvrtc

我有一个很大的png纹理4096x4096,我需要加载内存中的部分内容。我已经将大png纹理拆分为16个1024x1024磁贴,然后将它们转换为PVR压缩文件。

问题在于,当我绘制这些图块时,图块之间的边缘与png不同。所以,我认为如果有一个工具可以生成一个4096x4096 PVR纹理然后将其分成16个1024x1024 PVR瓷砖?

1 个答案:

答案 0 :(得分:7)

通过PVR(这是一种支持多种纹理类型的更通用的纹理文件格式)我假设你的意思是PVRTC?

PVRTC在传统意义上不是基于块的,例如,在ETC或S3TC中,纹理被分成4x4像素块,并且每个块被单独压缩。相反,它试图在重叠的像素区域之间共享数据。它(也有点)假设纹理可能瓦片,例如,最左边缘区域实际上与极右手共享信息(并且类似地用于顶部和底部)。除非边缘完全不同,否则这通常不是太大的问题。

如果您因此尝试将已经压缩的纹理细分为较小的区域,那么它就不会起作用,因为压缩器已经对大图像中共享的内容做出了假设,这与小图像不一样。 / p>

对于单独压缩每个部件,听起来每个单独部件的边缘可能完全不同。我唯一能想到的就是把你的原始纹理切成(例如)(2 ^ N -4)x(2 ^ N -4)单位但是将它们居中存储在2 ^ N * 2 ^ N纹理中你所在的地方使用原始像素的副本填充2像素边框。然后,将纹理映射设置为仅使用中心(2 ^ N -4)x(2 ^ N -4)区域。希望这可以减少不连续性假象。