美文网首页
NGUI 深入解析

NGUI 深入解析

作者: hardac | 来源:发表于2015-11-16 15:52 被阅读0次

    NGUI的总纲领

    UIGeometry好比为煮菜准备食材

    UIDrawCall好比是煮菜的工具(锅,炉子等)-

    UIPanel就是大厨了决定着什么时候该煮菜-

    UIWidget(UILabel,UISprite和UITexture)是这道菜怎么样的最终呈现

    UIDrawCall

    重要属性

    mActiveList 保存正在使用的UIDrawcall列表

    mInactiveList 保存暂时不使用的UIDrawcall,方便再次使用,避免再次创建,增加GC。

    mMaterial; 当前UIDrawcall使用的材质球

    mTexture; 当前材质球使用的纹理

    mShader 动态渲染使用的shader

    mTrans 缓存transform

    mMesh 当前UIDrawcall的mesh

    mFilter 当前UIdrawcall 的meshfilter

    mRenderer 当前UIDrawcall的meshRender

    mDynamicMat 当前UIDrawcall渲染的材质球

    注意:mDynamicMat和mMaterial区别是,前者是实时渲染的材质,后者是保存渲染的数据

    方法

    CreateMaterial : 创建材质球,根据mMaterial提供的数据,动态生成一个mDynamicMat材质球来进行实时渲染。主要实现方法----替换shader

    RebuildMaterial: 重建材质球,实现思路:首先把原有的mDynamicmat材质球销毁,然后新建一个mDynamicmat材质球。再对mDynamicmat这个材质球的渲染顺序和主要纹理就行修改。

    UpdateMaterials:更新材质球,当材质球的属性发生了变换时,对材质球进行更新。

    提示:这三者的关系:updateMaterials调用RebuildMaterial,然后再调用CreateMaterial。

    UpdateGeometry:更新UIDrawcall的几何数据。然后把这些几何数据放到UIDrawcall的mesh中进行网格渲染。

    OnWillRenderObject:mDynamicMat渲染进行设置

    UIGeometry

    说明:所有的UIWidget类都含有一个这个类,它是记录UIWidget的几何数据。

    重要属性

    Verts : 顶点

    uvs : uv坐标

    cols: 颜色值

    mRtpVerts : 相对于panel的顶点数据

    mRtpNormal : 相对panel的法线

    方法

    ApplyTransform: 对几何数据进行给定的矩阵转换

    WriteToBuffers:导入对象的几何数据

    UIPanel

    重要属性

    重要方法

    FillAllDrawCalls: 重新绘制整个Panel,触发条件:

    新建一个dc和删除一个dc

    panel的初始

    注意:这个很耗性能,所以建议不要

    要点

    每一个UIWidget都有一个UIGeometry,但是并不都有一个UIDrawCall,而是要通过Batch合并达到减少DrawCall的数量,UIDrawCall是由UIPanel生成的

    相关文章

      网友评论

          本文标题:NGUI 深入解析

          本文链接:https://www.haomeiwen.com/subject/bmbkhttx.html