上QQ阅读APP看书,第一时间看更新
4.4.4 MaterialModifiers、SpecializedCollections和Utility
材质球修改器、特殊收集器、实用工具这三部分的逻辑量相对少却相当重要,它们是其他模块所依赖的工具。
MaterialModifiers、SpecializedCollections、Utility的文件夹结构如图4-6所示。
图4-6 MaterialModifiers、SpecializedCollections、Utility的文件夹结构图
IMaterialModifier是一个接口类,是为Mask修改材质球所准备的,所用方法需要各自实现。
IndexedSet是一个容器,在很多核心代码上都可使用,它加快了移除元素的速度,并且加快了元素是否包含某个元素的判断操作。
ListPool是List容器对象池,ObjectPool是普通对象池,很多代码上都用到了它们,它们让内存的利用率更高。
VertexHelper特别重要,它用来存储生成网格(Mesh)需要的所有数据。在网格生成的过程中,由于顶点的生成频率非常高,因此VertexHelper在存储了网格的所有相关数据的同时,用上面提到的ListPool和ObjectPool作为对象池来生成和回收,使得数据被高效地重复利用,不过它并不负责计算和生成网格,网格的计算和生成由各自的图形组件来完成,它只提供计算后的数据存储服务。