graphics - 如何为不同分辨率的屏幕生成 Sprite 艺术资源?

标签 graphics opengl-es 2d sprite

我正在开发一款使用 OpenGL 显示 Sprite 的游戏,即没有投影的 2d 四重映射图形,它将显示在几个不同分辨率的屏幕上。 (即 iPhone 视网膜/非视网膜、iPad..我的下一个项目,问题将扩展到数量更多的桌面分辨率)

我可以处理不同的纵横比,这可以通过 opengl 和我的 Sprite 放置来处理。我也可以接受稍有不同的分辨率 - 使用相同的艺术并为屏幕加边框,或显示更多信息..但是当事物开始增长/缩小 50% 以上时,这是一个主要问题。

在这种情况下生成艺术 Assets 的标准程序是什么?生成最大分辨率并让 OpenGL 在光栅化过程中担心调整大小,或者人们是否为每个主分辨率生成艺术集?

光栅化的 Sprite 艺术在拉伸(stretch)(插值)时往往会变得丑陋,所以我很担心..但生成不同的尺寸实际上意味着出于实际目的,我必须使用矢量图并导出多种分辨率。限制了艺术家,并且就加载和管理资源而言有些复杂

(是的,我可以在一定程度上“尝试一下”,但我已经知道结果了。我正在寻找人们使用的解决方案和我可能不会想到的角度。这个问题确实有答案不是主观的或懒惰的)

最佳答案

您是正确的,缩放位图往往会使 Sprite 变差。有几种方法可以解决这个问题:

  1. 以所有要求的分辨率绘制它们(像素艺术)。虽然工作量很大,但您可以完全控制。
  2. 绘制它们(矢量)并以所有所需的分辨率渲染它们。减少工作量,但放大或缩小超过 50% 或 200% 可能会产生不好的结果。
  3. 绘制它们(3D 应用程序)并以所有所需的分辨率渲染它们。相当多的工作,但一组非常一致的 Sprite 。

对于每个选项,您都可以自由地对位图进行后处理以清理它们或添加细节,但如果您对选项 2 和 3 执行此操作,则会破坏链条,并且在渲染时必须再次应用更改再次相同的设置。

另一种选择是限制分辨率的变化。

据我所知,在(游戏)行业中,使所有(或最常用/可见的) Sprite 尽可能像素完美是很常见的。这就是他们付给艺术家的钱......

关于graphics - 如何为不同分辨率的屏幕生成 Sprite 艺术资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4698491/

相关文章:

algorithm - 计算视差层世界坐标?

c++ - 什么是内斜接计算?

c++ - QT 鼠标移动事件是否在单独的线程中?以及如何解决与此相关的绘画应用程序问题

android - eglCreateWindowSurface 因 java.lang.IllegalArgumentException 而失败

javascript - 如何使用 WebGL 让 2D 形状环绕 Canvas ?

c - 使用指针的二维数组

graphics - 程序员的3D建模

java - Java中的移动球

Android OpenGL 纹理 : creating and deleting them on the fly

ios - Openframeworks iOS 项目 : texture on ofSpherePrimitive breaks