Godot 渲染程序选项

Godot 支持两种渲染引擎:GLES2 和 GLES3。启动项目时,您应在 GLES2 或 GLES3 之间进行选择,并尽可能避免切换。项目可以在这两个渲染引擎之间来回切换,但切换需要额外的迁移工作。

在 Android 上,这些渲染程序分别使用 OpenGL ES 2.0 API 和 OpenGL ES 3.0 API。GLES3 渲染程序具有更高级的功能,而 GLES2 渲染程序与更多的 Android 设备兼容。此外,这两种渲染程序会针对相同的输入场景数据生成略有不同的视觉输出。之所以会产生这种差异,是因为 GLES2 渲染程序使用 sRGB 颜色空间,而 GLES3 渲染程序使用线性颜色空间。

选择渲染程序

GLES2

GLES2 渲染程序最适合具有适度图形要求的 2D 或 3D 项目,几乎与所有活跃的 Android 设备兼容。如果您的项目旨在在旧版设备上顺畅地运行,并且您打算支持这类设备,则 GLES2 可能是最佳选择。

在 Android 上使用 GLES2 渲染程序的一个重要限制是,仅支持一种压缩纹理格式:ETC1。ETC1 不支持 Alpha 通道。其他引擎可能会使用双 ETC1 纹理作为解决方法,其中一个纹理包含颜色数据,另一个纹理包含 Alpha 通道数据。Godot 不会这样做。在 Android 上使用 GLES2 渲染程序的项目在添加 Alpha 通道时必须使用未压缩纹理。未压缩纹理占用的内存明显多,且性能不如压缩纹理。特别是资源有限的旧款设备,在使用较大的未压缩纹理时,可能会出现问题,包括遇到内存限制。

GLES2 渲染程序可能无法使用高级渲染功能。GLES2 渲染程序的限制包括但不限于:

  • 根据实时活动光源扩展的性能不佳。
  • 不支持高清范围、折射属性、屏幕空间反射或屏幕空间环境光遮蔽等渲染功能。
  • 与着色器复杂性有关的限制。
  • 缺乏实时的全局光照支持。
  • 缺乏针对粒子的 GPU 加速支持。

GLES3

GLES3 渲染程序与将近 90% 的支持 OpenGL ES 3.0 的活跃 Android 设备兼容。只有最早的活跃 Android 设备不支持 OpenGL ES 3.0。

尽管 GLES3 渲染程序与任何 OpenGL ES 3.0 设备都兼容,但请注意,旧款设备不太可能以可接受的帧速率运行。此外,一些旧款设备的 OpenGL ES 3.0 实现中包含图形驱动程序错误。Android 上的 GLES3 渲染程序针对驱动程序错误提供的缓解措施有限。在新款设备上,则不太需要担心此类问题。

GLES3 渲染程序在 Android 上支持 ETC2 纹理压缩格式。与 ETC1 不同,ETC2 支持 Alpha 通道。

如需了解详情,请参阅 Godot 文档 - GLES2 与 GLES3 之间的区别