用于2D游戏的OpenGL ES设置可以更好地执行和/或节省电池

时间:2016-04-06 20:10:15

标签: android ios opengl-es opengl-es-2.0

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

2 个答案:

答案 0 :(得分:2)

我在Android中讨论OpenGL ES,但我确信它在IOS环境中类似。您可以使用不同的优化操作来使用Opengl ES。

OpenGL ES环境中的优化

创建OpenGL上下文时,会创建许多“缓冲区”:

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

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

  1. 减少颜色缓冲内存占用:要做到这一点,你必须减少像素格式:RBG_565这是一个很好的格式
  2. 不要创建深度缓冲区:你不需要它。
  3. 不要创建模板缓冲区:您不需要它。
  4. 这种优化主要是减少内存占用。但是你知道,你需要管理的内存越少,你就越快。

    绘制操作期间的优化

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

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

答案 1 :(得分:1)

实际上,在这种情况下无所事事。 OpenGL不是3D游戏引擎。 在默认情况下,您担心的每个选项都已被禁用。

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

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

如果您不需要,请不要在典型的渲染管道中制作内容。

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