NGUI图形工作流程

UIWidget是UI的基础组件(UILable、UISprite)的基类,含有组件的基本信息(width、height、color等)。

UIGeometry是UIWidget的几何数据,记录了顶点坐标、贴图的UVs和颜色信息。

UIDrawCall是将多个UIWidget的UIGeometry组合起来一起绘制,具体的UIWidget如果公用一个UIDrawCall由UIPanel控制。

UIRect是Widget和Panel的基类,它是一个抽象类。它为UIPanel和UIWidget提供了一些公用的方法,这些方法通过AnchorPoint设置后两者的矩形区域。UIRect是为UI组件描述其位置和尺寸信息,通过AnchorPoint来实现,根据目标参考系和相对位置来计算矩形区域的每一个边的位置。

 

简要的NGUI的图形工作流程

UIGeometry被UIWidget实例化后,通过UIWidget的子类,也就是UISprite、UILabel等,在OnFill()函数里算出所需的Geometry缓存(顶点数、UV、Color、法线、切线)。

在UIPanle,通过遍历自己子类下所有的UIWidget组件(按深度排序),先创建一个UIDrawCall,如此反复循环搜索该UIPanel下的每一个Widget,只要是material,texture,shader都和上一个widget一样的widget,它们的缓存都传给同一个UIDrawCall,直到循环结束或者碰到一个material,texture,shader对象任一不同的Widget。当遇到这种Widget,循环会创建一个新的UIDrawCall,然后传递material,texture,shader,缓存,如此继续,知道循环结束。

每次有新的UIDrawCall产生,UIPanel都会调用上一个UIDrawCall的UpdateGeometry()来创建渲染所需的对象。这些对象包括MeshFilter、MeshRender和Mesh(Mesh的vertices、uv、color、Normals、tangents和triangles)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值