java - libgdx - 在内存中调整纹理大小

标签 java android opengl-es libgdx textures

在处理不同的屏幕尺寸时,我为 SD、MD 和 HD 手机/平板电脑使用了 3 包 Assets 。 但是这样做有点烦人,而且会使 APK 变大。 我只想使用我想使用的最大包,比如 HD。 但是如果有人有 3.2"手机,我不想在 320x480 手机上渲染 1280x768 背景..

所以我只是想知道..是否可以使用 libGDX 来调整纹理的大小? 我的意思不是像调整大小,以特定尺寸绘图。我的意思是,在 Texture Packer GUI 中,我可以添加最大的 Assets 包并选择导出 HD 或 MD 包。 是否可以在运行时调整纹理的大小? 因此,如果我在小型手机上玩游戏,纹理的尺寸会更小。

我希望你们明白我想说的是什么。

最佳答案

在低端手机上使用额外的存储空间可能是最好的选择。替代品的吸引力较小:

  1. 加载图像时缩小图像。这将延长已经电量不足的手机的加载时间。缩放必须在 CPU 上完成,因为 GPU 可能不支持屏幕尺寸倍数的纹理。此外,您还需要将这些大图像加载到内存中,这将对小手机造成更大的负担。 (你可以这样做一次并缓存结果,这样你就不会惩罚每次启动,但你也可以将文件放入 .APK 中)(你可以将高清图像分成几部分以避免淹没低端图像电话,但这只会进一步增加启动延迟。)如果您仍想尝试,使用 LibGDX,您可以使用 FrameBuffer在运行时从高分辨率图像创建低分辨率图像。

  2. 渲染图像时缩小图像。这不太可能可靠地工作,并且需要大量内存占用才能保持图像加载。

要真正了解您在此处优化的内容,请尝试使用所有分辨率构建您的 APK,然后再次仅使用高清图像。我敢打赌差别不会那么大(根据定义,低端图像相对来说不会那么大。)

关于java - libgdx - 在内存中调整纹理大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25493935/

相关文章:

iphone - 为什么在 iPhone 应用程序中调用 glMatrixMode(GL_PROJECTION) 会给我 EXC_BAD_ACCESS ?

java - 如何在单击按钮时打开原生表情符号键盘?

ios - 为什么向我的应用程序添加多重采样会在第一帧卡住屏幕?

java - 如何在捕获到异常时优雅地清理 HTTPURLConnection?

Android 过渡框架向后移植?

java - 设置 (PNG) 位图颜色而不是逐像素设置的更快方法

java - 方括号导致android中的URL字符串出错

opengl-es - 实例化在 webgl 中做什么

Java 8 到 Java 7 代码

java - SWT:定期更新GUI