参考教程
Tutorial 10: Terrain Cell Culling
学习记录
这篇文章中我们介绍基于 Cell 的裁剪,本篇会使用到我们之前介绍的裁剪技术:【DirectX】21-视锥裁剪 。代码修改幅度并不大。
首先来看我们的裁剪类,我们既然使用立方体 Cell ,那么自然使用包围盒裁剪,裁剪类声明如下:
1 | //////////////////////////////////////////////////////////////////////////////// |
在 TerrainClass
中我们新增多个变量以及方法,主要是增加了对裁剪/渲染的数量进行封装以及裁剪的执行,如下:
1 | //////////////////////////////////////////////////////////////////////////////// |
在 RenderCell
函数中,调用裁剪类的方法进行裁剪计算,我们将只渲染能看到的部分 Cell:
1 | bool TerrainClass::RenderCell(ID3D11DeviceContext* deviceContext, int cellId, FrustumClass* Frustum) |
在 ZoneClass
中我们正常的渲染即可:
1 | bool ZoneClass::Render(D3DClass* Direct3D, ShaderManagerClass* ShaderManager , TextureManagerClass* TextureManager) |
最终效果:
可以看我们新增的 UI 显示来了解裁剪情况