如何快速渲染这些材质呢?
Pool的概念
相同的单个物品的渲染
我们可以用类似于对象池的概念,将相同类似的资源都放到同一个Pool里(类似与Shader、Mesh网格体、Texture贴图纹理等,
正如我们一直强调的将数据都存储在一起,这样的话就可以显著提升效率。
如果同一份材质被多个物品引用的话,我们也需要重复存储吗?
答案显然不是,我们只需要存储一份即可,然后直接调用一个引用即可,也可以用我们经常用的单例模式(Instance来结合使用)
现代引擎中,我们尽量将这些绘制的工作放置在GPU上,而不是CPU中。
PVS算法
算法的简要思想就是首先根据地图来划分网格,然后按照每个网格来单独渲染,这样的话就可以节省性能和资源
拿图来举例子的话,就是我当前站在七号房间,然后可以看到的房间是1、2、3、6,因此我们只需要渲染这几个房间即可
这个算法的思想很简单,但是划分网格和计算上面是个难点
在现代的游戏引擎里面,那些纹理(Texture)照片等,都不会用那些比较好的压缩算法,来存储文件
(原因是这些压缩算法,并不支持随机访问,并且计算的复杂度会非常高)