参考教程
Tutorial 12: Terrain Mini-Maps
学习记录
这篇文章中我们介绍小地图的实现,我们将在右上角显示一个小地图并且在地图上实时显示我们摄像机的当前位置,本篇代码基于上一篇,新增 MiniMapClass
,并且使用了 BitmapClass
。
小地图的核心内容只是简单的渲染一个二维的纹理贴图在显示区右上角,然后计算使用当前摄像机的 x , z 坐标来渲染代表摄像机的小点。其类声明如下:
1 | //////////////////////////////////////////////////////////////////////////////// |
可以看到我们要渲染的其实就是两个 BitmapClass
的对象,具体渲染在 Render
方法里:
1 | bool MiniMapClass::Render(ID3D11DeviceContext* deviceContext, ShaderManagerClass* ShaderManager, XMMATRIX worldMatrix, |
在 PositionUpdate
方法里,我们根据实时的摄像机 x , z 坐标来计算我们的 point 在小地图上的位置:
1 | void MiniMapClass::PositionUpdate(float positionX, float positionZ) |
最后,我们在 UserInterfaceClass
里新增 MiniMapClass
类的对象,并实现对其的渲染:
1 | class UserInterfaceClass |
在 Frame
方法里我们调用 PositionUpdate
方法:
1 | bool UserInterfaceClass::Frame(ID3D11DeviceContext* deviceContext, int fps, float posX, float posY, float posZ, |
最终效果: