Direct3D 实现一个汽车小游戏

时间:2019-01-23
本文章向大家介绍Direct3D 实现一个汽车小游戏,主要包括Direct3D 实现一个汽车小游戏使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

github:https://github.com/viktorika/a-car-game-written-in-direct3d

这个是我花了几天入门看了Direct3D的官方教程和另外一本<Dx11游戏编程入门>后做的一个简单的项目,为了加深我对direct3D的认识。

因为只是入门,所以用的接口基本都是windows sdk的dx12接口,只有加载贴图的时候被微软文档告知已经移除出来作为第三方库使用了,无奈之下只好去github搜了DirectTK库,把头文件和lib文件都放进了windows sdk中,一劳永逸。

绘制的模型

游戏场景中只绘制了3个模型,天空盒,地砖,汽车。一切从简,如果要加入复杂的模型然后自己画的话会很复杂,所以这里就只画了三个模型

天空盒

天空盒绘制了一个正方体结构,然后在里面贴图跟着视角走就ok了,很简单。

地砖

先做个正方形模型,然后变换到世界空间的时候通过循环来重复渲染,也很简单。

汽车

这个就稍微复杂一点,不过模型上用的是长方体+4个圆柱,比较简单的模型,毕竟只用三角形构造,弄得太复杂也没什么用。不如把精力花在汽车运动协调上。这里需要记录汽车的中心点,当前汽车的正方向和前后轮的旋转角这些信息,才能够比较正确地展示每一帧汽车的运动轨迹,每一帧有关的运动的计算都通过一个类Motion来处理,设定汽车运动时是匀速,如果是变速运动比较麻烦,不过也不是不能做,本来公式我都想好了,结果隔天做这个的时候想了下弄匀速就好了,不搞那么麻烦。

照相机

有两个相机,一个用于第一人称视角,另一个用于第三人称视角,第一人称视角是固定的,所需要的参数通过Motion处理后传递给它,第三人称视角的参数也是如此,另外可以通过鼠标控制第三人称视角的方向。

 

整个项目都比较容易,没涉及什么复杂的算法,有兴趣的可以看看,详细文档也写在github上了。