Godot 渲染器选项

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

在 Android 上,这些渲染器分别使用 OpenGL ES 2.0 和 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 之间的差异