iphone - PVR Texture Compression Tiling(暴露边缘上下文)

标签 iphone objective-c opengl textures

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

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

1) 以某种方式告诉 texturetool 命令行程序以适应其他相邻的图像。
2) 使用命令行程序生成代表整个图像的巨大 PVR 纹理,然后以某种方式将字节拆分为多个图像——这可能是不可能的。
3) 做一些 OpenGL ES 技巧,很好地混合边缘。
4)在每个图 block 中有冗余信息的地方做一些技巧,然后在绘制纹理时剪裁这些区域(请不要)。

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

最佳答案

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

关于iphone - PVR Texture Compression Tiling(暴露边缘上下文),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1233652/

相关文章:

iphone - iOS 6 的多个 UIInterfaceOrientations 应用程序

ios - 如何修复 UITableView Accessibility 在滚动时说错语言?

iphone - 在 iPhone 中安装 ipa 文件,而不将其设备 ID 添加到配置文件中

c++ - 带 alpha channel 的纹理覆盖背景对象

iphone - Objective-C 中的 NSRange 有问题吗?

iPhone:同步两个不同图层上的动画

ios - iPhone写入文件失败

ios - Objective-C:强制一个类成为其他类的子类

c++ - 如何正确填充顶点数组

c++ - 用 C++ 绘制标量和 vector 场的最简单方法?