android - 2D opengl 游戏中多屏幕支持的提示?

标签 android opengl-es image-scaling

支持多屏幕的问题已经被问死了,但我还没有看到关于游戏开发(带有碰撞盒、碰撞检查等)的太多讨论。

目前,由于升级,我的游戏在“兼容模式”下运行,在高端设备上产生的视觉效果非常差。我正在寻找其他人如何使他们的游戏图形在所有屏幕尺寸上看起来都不错的提示和建议。

开发人员是否包含每个资源的 2 个副本(中密度和高密度),或者高密度资源是否只是按比例缩小以用于低密度设备?

您的计算中是否使用了与密度无关的像素?

最佳答案

Do developers include 2 copies of each resource (medium and high densities) or are high density resources simply scaled down for lower density devices?

这是处理事情的一种方法,我已经看到了以下方法:

  1. 为您要支持的每个分辨率添加位图
  2. 包括您想要支持的最高分辨率的位图,并缩小其他分辨率。
  3. 使用您希望支持的最高分辨率的矢量图形。

当使用方法 2 或 3 时,我是这样处理的:

  • 创建针对 960 x 1600 屏幕尺寸的 Assets 。
  • 480 x 800 - 缩小一半
  • 320 x 400 - 缩放三分之一

这为我提供了 future 计算所需的屏幕密度值。

我更喜欢方法3。

我目前正在开发一个等距 2d 游戏引擎,它从磁盘加载 .svg 资源,然后在阶段的“加载”部分将它们“绘制到位图”。这样做可以让我在运行游戏时获得磁盘空间小 (.svg) 和更快的性能(位图)的好处。

工作流程如下:

  1. 解析关卡所需的游戏 Assets
  2. 从磁盘加载相关的 .svg 资源
  3. 将 .svg 内容绘制成位图
  4. 扔掉加载的.svg
  5. 对所有 Assets 重复
  6. 起始级别

Are density-independent pixels used in your calculations?

是的,我是这样使用的:

sprite.x = new_x_position * screen_density;

关于android - 2D opengl 游戏中多屏幕支持的提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5618563/

相关文章:

Android:通过 Content Provider 访问 SQLite 数据库还是实现 DAO?

c# - 在没有 GDI+ 或 WPF 的情况下在服务器上调整和编码大型 Tiff 图像

java - 是否可以在 Java 中对两个字符串数组使用一个 for 循环?

android - SearchView 类似收件箱应用

android - OpenGL ES 有不同的 UV 坐标?

iphone - iPhone OS 上 OpenGL ES 的首选顶点数据格式是什么?

math - 尝试理解 WebGL 中透视矩阵背后的数学原理

C++ 如何通过删除像素来最佳缩放图像

kernel - 使用 OpenCL 内核的最近邻插值代码

android - collapsingToolbarLayout 仅在折叠时设置标题