Android OpenGL对2D游戏进行ES设置,以提高游戏性能和/或节省电池电量

Android OpenGL对2D游戏进行ES设置,以提高游戏性能和/或节省电池电量,android,ios,opengl-es,opengl-es-2.0,Android,Ios,Opengl Es,Opengl Es 2.0,例如,我读到2D游戏中通常不需要深度缓冲区,禁用它可以大大提高性能。是否还有其他功能可以禁用或设置可以调整?实际上,在这种情况下没有什么可做的。OpenGL不是一个3D游戏引擎。 在默认情况下,您担心的每个选项都已被禁用 你不会做深度缓冲,因为你不需要它。 您不会使用很多矩阵,因为您不需要投影矩阵、视图矩阵等 简而言之,就是不要启用你不需要的东西 如果不需要,请不要在典型的渲染管道中制作某些东西 不要制作长的着色器代码,因为通常情况下,2D游戏中不需要那么长的着色器代码。实际上,在这种情况下没有

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

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

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

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

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


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

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

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

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

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


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

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

OpenGL ES环境下的优化

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

  • 颜色缓冲区
  • 深度缓冲器
  • 模板缓冲区
您可以使用不同的操作优化OpenGL上下文创建:

  • 减少颜色缓冲区内存占用:为此,必须减少像素格式:RBG_565这是一种很好的格式
  • 不要创建深度缓冲区:您不需要它
  • 不要创建模具缓冲区:您不需要它
  • 这种优化主要是减少内存占用。但是你知道,你需要管理的内存越少,你的速度就越快

    绘图操作期间的优化

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

  • 让这些GPU程序尽可能简单。要在Android中实现这一点,我使用NVIDIA Tegra调试器。但这是因为我有一款带有Tegra X1芯片组的平板电脑
  • 首选客户端缓冲区
  • 尽可能预先计算所有内容:必须以最大速度绘制每一帧,因此,如果静态定义了某个内容(即:矩阵投影),请在开始绘制帧之前进行计算

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

    OpenGL ES环境下的优化

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

    • 颜色缓冲区
    • 深度缓冲器
    • 模板缓冲区
    您可以使用不同的操作优化OpenGL上下文创建:

  • 减少颜色缓冲区内存占用:为此,必须减少像素格式:RBG_565这是一种很好的格式
  • 不要创建深度缓冲区:您不需要它
  • 不要创建模具缓冲区:您不需要它
  • 这种优化主要是减少内存占用。但是你知道,你需要管理的内存越少,你的速度就越快

    绘图操作期间的优化

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

  • 让这些GPU程序尽可能简单。要在Android中实现这一点,我使用NVIDIA Tegra调试器。但这是因为我有一款带有Tegra X1芯片组的平板电脑
  • 首选客户端缓冲区
  • 尽可能预先计算所有内容:必须以最大速度绘制每一帧,因此,如果静态定义了某个内容(即:矩阵投影),请在开始绘制帧之前进行计算