游戏开发之四 设置世界空间

我们之前用顶点缓冲区绘制图形时,在灵活顶点格式结构体struct CUSTOMVERTEX中的三维坐标是“未经转化的”即直接绘制成要显示的2D效果,即rhw(对3D绘制的学习之前,先绘制2D的,绘制2D的时,加上rhw,之前绘制的图形就是这种。其实这里不太明白···)

 

先来认识3D中的几个空间:

本地空间:模型空间,定义组成物体的三角形列表时所使用的坐标系统。不需要考虑物体的位置大小与其他物体的关系等,简化模型处理工作上很有用。

世界空间:把模型组合到一起,形成一个场景,并使用统一的坐标系,即世界空间。主要是物体之间的位置关系。

视图空间:我们所看到的空间,需要在场景中放一个虚拟摄像机,决定我们能看到的场景,如我们只能看到一个三维物体的正面,而背着镜头的一面我们是看不到的。

视口:我们前面所绘制的窗口,在游戏中,通常是整个屏幕。

 

因此,在我们在本地绘制好后,需要转换到相应的世界空间,并通过摄像头来查看。我们将此过程封装到一个专门的方法SetupMyWorld中,该方法中主要是设置空间的转换

1、设置旋转轴,旋转角度:世界转换

2、设置摄像机位置:视图矩阵

3、视图投影变换

每一步中都有对应的 定义——>初始化——>设置    三个步骤

 

 

开始绘制一个真正的3D图形吧~~~

 

1、修改结构体和宏,都去掉rhw的定义,并将对应顶点中的rhw定义删除,可将结构体和宏放到Render方法外部,以后可能要定义纹理等时用到。

2、实现转换SetupMyWorld()

3、执行SetupMyWorld(),应该在Render()方法的开头就执行

4、另外,需要在初始化d3d设备中去设置裁剪模式和灯光模式

5、也可以设置让图片旋转,改变裁剪模式等去深入理解。

 

效果图:正在绕对角线旋转

 

 

 

 

这些主要都是老师讲的写的,感觉还是自己亲手敲一下代码有感觉!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值