代码之家  ›  专栏  ›  技术社区  ›  Eli

PVR纹理压缩平铺(暴露边缘上下文)

  •  4
  • Eli  · 技术社区  · 15 年前

    在我的iPhone游戏中,PVR纹理压缩工作得很好,但在将多个纹理平铺在一起时,我遇到了一些问题。基本上,我有一个非常大的背景,分为多个512x512瓷砖,所有的PVR压缩。然后它们被画在一起,看起来像一个大背景图像。PVR的工作方式,因为它不知道它应该像压缩一个非常大的纹理一样压缩纹理-也就是说,使用邻居的平铺信息来确定如何执行PVR压缩。

    我可以想出一些方法来做到这一点。

    1) 以某种方式告诉texturetool命令行程序以适应将相邻的其他图像。

    3) 做一些OpenGL ES技巧,很好地融合边缘。
    4) 在每个瓷砖中有多余信息的地方做一些小动作,然后在绘制纹理时剪裁这些区域(请不要)。

    希望我能做1,2或3,或者有其他一些众所周知的解决方案。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Eli    15 年前

    我最终选择了第四种选择。我不认为在这种情况下,PVRTC是不合适的——事实上,这几乎是必要的。当我一次在内存中总共有24个512x512纹理(表示非常大的背景和前景)时,将它们放在未压缩的内存中是自杀。所以我只是简单地使用PVR压缩作为正常,然后在我的平铺算法中编辑了几行代码,使它们在每一端重叠和修剪15个像素。瞧,看起来很棒。花了几天时间,非常烦人,但我认为这是一个很好的选择,对于那些在iPhone上需要非常大的平铺背景的人来说。

        2
  •  1
  •   Jon-Eric    15 年前

    我最好的建议,但不是你问的,是知道何时PVRTC不合适。到目前为止,最简单的解决方案是不使用PVRTC来处理这些瓷砖。我花了很多时间试图让PVRTC在它不适合的情况下工作。

    也就是说,

    使用PVRTC时,纹理始终假定为平铺(自身),因此右边缘上的像素会影响左边缘上的像素(与“上”和“下”相同)。因此,选择1或2可能行不通。