UGUI深入理解--渲染系统

UGUI深入理解--渲染系统
最新回答
念如丝缕

2021-04-16 19:07:59

UGUI渲染系统的深入理解如下

  1. 渲染基础

    • UGUI展示图片的机制与其他渲染方式类似,需要mesh和material。
    • 关键在于如何高效地将这些元素传递给渲染引擎。
  2. UI渲染流程

    • CanvasUpdateRegistry:作为驱动系统,负责通知需要更新渲染的UI组件,避免频繁数据变化导致的重复渲染,提升渲染效率。
    • Graphic基类:组织mesh和material,并将这些元素传递给CanvasRenderer。
    • CanvasRenderer:连接画布与渲染组件,负责将网格绘制到画布上。尽管名称可能误差圆导,但它实际上与Graphic关联更大,而非Canvas。
  3. 渲染优化

    • 合批操作:Canvas通过合批操作整合虚并塌节点下的Graphic,降低drawcall,从而减少性能消耗。
    • 重绘条件:包括enable/disable操作、validate操作、mesh或material变化等,文本是最频繁触发重绘的元素。
    • 缓存机制:CanvasRenderer的SetMesh和SetMaterial接口允许一次设置后,在元素不变时无需重复设置,底层具备缓存机制。
  4. 遮挡Mask

    • RectMask2D:提供矩形区域的遮挡功能,类似于NGUI中的裁剪方式,减少了drawcall,性能较优,但仅限于矩形区域。
    • Mask:通过设置模板缓冲值实现遮挡,功能更灵活但可能带来性能开销。
  5. 与NGUI的对比

    • 重绘机制:UGUI通过事件触发重绘,相比NGUI每帧Update中检测,效率更高。
    • 层级管理:UGUI的节点顺序调整更直观,而NGUI需要逐层展开查看深度。
    • 裁剪功能:UGUI的2D裁剪方式更高效,但NGUI支蔽首持边缘模糊效果。
    • 图集管理:NGUI提供较为灵活的图集控制,而UGUI默认图集管理受限,通常需要配合其他方案。
  6. 总结

    • UGUI的渲染系统表现良好,遮挡mask功能强大。
    • 在图集管理方面,可能需要额外策略以控制包体大小与更新频率,从而提升应用的灵活性和高效性。