2D 游戏的 OpenGL ES 设置可以更好地执行 and/or 节省电量

OpenGL ES settings for 2D games to perform better and/or save battery

例如,我读到在 2D 游戏中通常不需要深度缓冲区,禁用它可以大大提高性能。还有其他我可以禁用的功能或可以调整的设置吗?

其实这种情况也没什么可做的。 OpenGL 不是 3D 游戏引擎。 默认情况下,您担心的每个选项都已禁用。

您不会制作深度缓冲区,因为您不需要它。 您不会使用很多矩阵,因为您不需要投影矩阵、视图矩阵等。

简而言之,不要启用你不需要的东西。

如果您不需要,请不要在典型的渲染管线中制作某些东西。

不要编写很长的着色器代码,因为通常情况下,在 2D 游戏中不需要那么长的着色器代码。

我在 Android 中谈论 OpenGL ES,但我很确定它在 IOS 环境中是相似的。您可以使用不同的优化操作来与 Opengl ES 一起工作。

OpenGL ES 上下文期间的优化

创建 OpenGL 上下文时,会创建许多 "buffer" 个:

  • 颜色缓冲区
  • 深度缓冲区
  • 模板缓冲区

您可以使用不同的操作优化 OpenGL 上下文创建:

  1. 减少颜色缓冲内存占用:要做到这一点,你必须减少像素格式:RBG_565这是一个很好的格式
  2. 不要创建深度缓冲区:您不需要它。
  3. 不创建模板buffer:you不需要它。

这种优化主要是减少内存占用。但是您知道,您需要管理的内存越少,速度就会越快。

绘图操作期间的优化

您可能使用 OpenGL ES 2.+,因此您必须编写着色器和顶点程序。您可以执行不同的操作:

  1. 让这些 GPU 程序尽可能简单。要在 Android 中执行此操作,我使用 NVIDIA Tegra 调试器。但那是因为我有一台带 Tegra X1 芯片组的平板电脑。
  2. 首选 VBO 客户端缓冲区
  3. 尽你所能预先计算:你必须以最大速度绘制每一帧,所以如果某些东西是静态定义的(即:矩阵投影),请在开始绘制帧之前计算它。