使用的是分片地形 (1)用四叉树管理tile,,并做Frustum Cull 前者在tile很多区域远大于视区时有好的CPU性能,,不过我还是用了视锥包围盒投影来加快剔除,,后者不用多说,,应该必做把。还有地形tile之间的OC我还是没做,,比较复杂; (2)对地表渲染状态排序绘制 先按TextureStageState排,,再按纹理排,,不过实际使用中好像效果不是很明显(可能跟纹理在显存中有关吧) (3)地形使用LOD 我使用了Interlocking Tiles的方法,,不过我没把tile做成米字形,,LOD等级的决定使用与计算的方法,,就是按等级距离先计算好一个模板,,运行时当视点所在的tile改变时,,把这个模板拷入相应位置。 (4)使用LOD地形的相关问题 地表过渡:LOD时地表细节由一张贴图组成,,不使用LOD时使用多纹理混合 (5)景物的绘制 先剔除,,我用了近似的方法,,即不可见tile上的景物不可见(对景物和地形有一定的要求) 景物的排序,,这个最头痛,,如果景物只使用一张贴图时可以按景物类型排 景物的LOD,,我使用两级LOD,,不用额外的计算位置,,在最高细节的地形tile里使用高细节景物,,其她用低细节的(不知道这样合不合理) (6)其她事项(有些还没实现) 天空盒:关z-buffer z-write (7)室内的连接考虑 在剔除相关的类上下点功夫,,做到剔除室内外无关 |
-
2007-04-22
-
2007-04-15
-
2007-04-10