Godot支持两个渲染引擎:GLES2和GLES3。您应该在启动项目时选择GLES2或GLES3,并尽量避免切换。项目可以在这两个渲染引擎之间来回切换,但是切换需要额外的迁移工作。
在Android上,这些渲染器分别使用OpenGL ES 2.0和OpenGL ES 3.0 API。GLES3渲染器具有更复杂的功能和特性,而GLES2渲染器与更多Android设备兼容。对于相同的输入场景数据,渲染器也会产生略微不同的视觉输出。这种差异是由GLES2渲染器使用sRGB颜色空间而GLES3渲染器使用线性颜色空间造成的。
选择渲染器
GLES2
对于具有适度图形需求的2D或3D项目,GLES2渲染器最合适,并且与几乎所有活跃的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的区别