实验二DirectX渲染及图形绘制实验
实验报告
项目1:DirectX渲染管道实验
在例程Cub的基础上,完成以下步骤:
1.修改Display函数中物体的旋转变换矩阵,使三维模型不再旋转。
2.修改摄像机位置坐标、观察点坐标、向上向量的值,记录以下状态时的值:
a)远距离拍摄。
b)近距离拍摄。
c)平面旋转90度。
3.修改变换矩阵的创建参数,即D3DXMatrixPerspectiveFovLH()函数的参数,观察并记录以下参数对应的画面:
a)近平面距离设为1000,远平面距离设为1000。
b)近平面距离设为1,远平面距离设为5。
c)近平面距离设为1,远平面距离设为1000。
d)宽高比:(float)width*1.5/(float)height
e)宽高比:(float)width*0.5/(float)height
f)宽高比:(float)width/(float)height
1、修改Display函数中物体的旋转变换矩阵,使三维模型不再旋转。
操作截图如下:
修改后的运行结果截图如下:
2、修改摄像机位置坐标、观察点坐标、向上向量的值,记录以下状态时的值:
a) 远距离拍摄。
操作代码:
运行结果:
b)近距离拍摄。
操作代码:
运行结果:
c) 平面旋转90度。
操作代码:
运行结果:
3、修改变换矩阵的创建参数,即D3DXMatrixPerspectiveFovLH()函数的参数,观察并记录以下参数对应的画面:(在第二步的基础上)
a) 近平面距离设为1000,远平面距离设为1000。
操作代码:
结果窗口画面一片空白。
b) 近平面距离设为1,远平面距离设为5。
操作代码:
运行结果:
c) 近平面距离设为1,远平面距离设为1000。操作代码:
结果与上图一样。
d) 宽高比:(float)width*1.5/(float)height
操作代码:
运行结果:
e) 宽高比:(float)width*0.5/(float)height 操作代码:
运行结果:
g) 宽高比:(float)width/(float)height
操作代码:
运行结果:
项目2:DirectX图形绘制实验
在例程Cub的基础上,完成以下步骤:
1.修改8个顶点中任一个一个顶点的值,观察并记录画面。
2.增加一个顶点数据(第9个顶点),具体值为:(2.0f,1.0f,1.0f)。观察并记录画面。此处需要注意顶点缓冲区创建的缓冲区大小参数为9个顶点(Vertex)。
3.增加一个三角形数据,即三个索引缓冲区,具体值为:6,7,8。观察并记录画面。此处需要注意索引缓冲区创建的缓冲区大小参数为39个索引(WORD)。
4.再增加两个三角形数据,具体值为自行设定,观察并记录画面。此处需要注意索引缓冲区创建的缓冲区大小参数为39+6个索引(WORD)。
5.改变渲染状态,分别设置渲染的FILLMODE为线框模式、顶点模式和面模式,观察并记录画面。
1、修改8个顶点中任一顶点的值,观察并记录画面。
操作代码:
运行结果:
2、增加一个顶点数据(第9个顶点),具体值为:(2.0f,1.0f,1.0f)。观察并记录画面。此处需要注意顶点缓冲区创建的缓冲区大小参数为9个顶点(Vertex)。
操作代码:
运行结果与上图一样,没有任何变化,下图只是截图时的旋转角度不同:
3、增加一个三角形数据,即三个索引缓冲区,具体值为:6,7,8。观察并记录画面。此处需要注意索引缓冲区创建的缓冲区大小参数为39个索引(WORD)。
操作代码:
运行结果:
4、再增加两个三角形数据,具体值为自行设定,观察并记录画面。此处需要注意索引缓冲区创建的缓冲区大小参数为39+6个索引(WORD)。
操作代码:
运行结果:
5、改变渲染状态,分别设置渲染的FILLMODE为线框模式、顶点模式和面模式,观察并记录画面。
线框模式(D3DFILL_WIREFRAME):
操作代码:
运行结果:
顶点模式(D3DFILL_POINT):
操作代码:
运行结果(注意:画面上有点):
面模式(D3DFILL_SOLID):
操作代码:
运行结果:
项目一:1
2
A
B
C
A
B
C
D
E
F
1:
2:
3:
4:
5:
A:
线框模式:
点模式:
C面模式
实验心得
本次实验在大家看来是非常简单的,但是我的电脑本身是有系统自身的问题,所以很多问题其实并没有解决好。我下次一定
会好好解决这些问题。