代码之家  ›  专栏  ›  技术社区  ›  tyrondis

用于2D游戏的OpenGL ES设置,以提高性能和/或节省电池

  •  0
  • tyrondis  · 技术社区  · 9 年前

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

    2 回复  |  直到 9 年前
        1
  •  2
  •   xcesco    9 年前

    我谈到了Android中的OpenGL ES,但我确信它在IOS环境中是相似的。您可以操作不同的优化操作来使用Opengl ES。

    OpenGL ES上下文期间的优化

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

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

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

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

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

    拉伸操作期间的优化

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

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

    实际上,在这种情况下没有什么可做的。OpenGL不是3D游戏引擎。 默认情况下,您担心的所有选项都已被禁用。

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

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

    如果不需要,请不要在典型的渲染管道中进行渲染。

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