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可能是最佳选择。

GLES2渲染器在Android上的一个重要限制是仅支持一种压缩纹理格式: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之间的差异