0

我正在使用 Unity3d (4.3.1) 和 NGUI 来创建 2d iOS (iPad) 应用程序。此外,我还需要使用大量全屏图像(大约 100 张大小为 2048x1536 的图像),例如 Gallery。现在我将它们与 GUI 类型一起使用,以最大尺寸 2048 和压缩质量覆盖 iPhone:正常。我正在使用UITexture带有 Unlit/Transparent 着色器来显示它们。

但是,在项目中大约 40 张图像后,XCode 会返回terminated due to memory错误。所以问题是,我需要什么类型的图像,以及使它们起作用的偏好?

我使用 iPad 3 作为 XCode 5.1.1 的测试设备。我会感谢任何帮助!

4

3 回答 3

2

此外,我还需要使用大量全屏图像(大约 100 张大小为 2048x1536 的图像),例如 Gallery。

我认为您的 2048x2048 大小的图像使用了非常大的内存区域。基本上,2048 幅图像使用 16MB 内存。所以,这个案例需要用到1600MB左右的内存!普通应用程序不超过 200 MB。

所以,我认为你需要减少使用内存:

  1. 请记住,此纹理将统一扩展为 2048x2048。( http://www.opengl.org/wiki/NPOT_Texture ) 因此,如果您要将文件大小减小到 1500x1000,您的应用程序仍然使用 2048x2048 图像。但是,如果您可以将文件大小减小到 1024x1024,请执行此操作。1024 图像只使用 4 MB 内存。

  2. 如果可以使用纹理压缩。用它。PVRTC 4 位 ( https://docs.unity3d.com/Documentation/Manual/ReducingFilesize.html ) 压缩使文件大小比真彩色大 1/8。内存大小也将减少。(可能减少一半)

  3. 如果您的应用程序不显示所有图像,请动态加载图像。使用拇指指甲。

祝你好运:D

于 2014-05-14T03:56:35.050 回答
0

如果你想制作一个类似画廊的应用来渲染照片,也许你可以尝试不同的方法:

  • 创建两个大的可编辑纹理并用图像数据填充纹素(它必须是可编辑的,否则您将无权直接将图像数据写入其中)。
  • 如果您仍然有内存问题,或者如果您想使用较低的内存,您可以使用几个较小的纹理作为图块。您可以将图像部分渲染到每个较小的纹理。请记住正确配置纹理边框,否则不要使用边框纹理以避免环绕问题。
于 2017-07-27T08:26:43.343 回答
-3

最好的方法是使用较小的纹理。在 ipad 中,您需要一个放大镜才能真正欣赏 1024x1024 和更大纹理之间的差异。请记住,ipad 的屏幕比计算机的屏幕小(7"~10"),并且启用过滤功能真的很难区分。

如果由于其他原因(缩放或类似)您仍然需要管理器这么大的纹理,我建议您使用以下方法之一:

  • 使用 alpha 通道(透明度)将纹理拆分为层:通常背景可以用较低的分辨率渲染。
  • 还将纹理分割成块:通常大多数纹理都有重复的图案。
  • 使用压缩。

如果可能,请始终避免使用如此大的纹理。

于 2014-10-23T02:26:27.800 回答