从10号开始做这个东西,是一边学习一边做的,学了DXUT框架、拾取技术(DX提供的、别人写的算法和用外接球模拟)
先说一下还要改进的地方:
1、无论先点哪一个方块,都按照程序设定的去转
2、光照问题:转了之后变暗
3、内存泄露(这个找了很久都没找到,我估计是DXUT框架的,汗)
设计思路:
1、渲染:设定27个世界矩阵,逐个渲染,用一个mesh,改变世界矩阵
2、拾取:采用内接球,用外接球的话会有相交的部分,但内接球无法判断一些区域
3、旋转:严格符合十字架的点击才能旋转
保存世界矩阵的一个副本,到旋转完90°的时候,用副本乘上90°的矩阵可以避免不完全旋转90°
坐标改变是用DX提供的函数D3DXVec3TransformCoord()
4、用3DS MAX做模型时把box的中心移动原点,方便操作
技术上遇到的但还没掌握的技术:
1、没有看DXUT提供的camera类。DXUT有3个camera类
2、还没有找到DXUT框架中是在哪里初始化一个IDirect3DDevice9的指针的
3、没有理解回调函数
以后准备添加的功能:
1、可以后退,就是退回上一步,这个用链式栈解决
2、随机弄乱魔方,让玩家做回原状 ,这个也是用链式栈,魔方的操作有18种,随机产生其中一种,然后添加到栈顶,这个可以利用第一种功能
3、提示功能。这个功能可以用来当做视频教学,一个一个出栈就行了
4、记录时间,这个简单
5、添加局域网对战(世荣说过,现在只是想一下,还没学过网络)
6、某女生玩家提出可以自选6中颜色
文件下载:Magic_Cube.rar