实验一DirectX基础实验班级:10数媒(1)班姓名:黄芳学号:E10700104一、实验目的1、理解并掌握Win32应用程序的原理和工作流程,并学会创建Win32程序。2、理解并掌握D3D程序流程。3、学会用VC6.0设置程序运行断点。4、熟悉函数Direct3DCreate9()、GetDeviceCaps()、CreateDevice()的参数和功能。5、熟悉IDirect3DDevice9*Device接口的Clear()函数功能。二、实验内容项目1:Win32程序基础实验1.请参照教材-附录A“windows程序设计”-第2节的内容,建立一个Win32应用程序。2.熟悉CreateWindow函数的各个参数,3.设置CreateWindow()中的lpWindowName参数,将窗口的标题改为“名字-学号-WIN32基础程序”.4.尝试CreateWindow()中的dwStyle参数各种标志组合,来修改窗口的风格。5.修改CreateWindow()中的X,Y,nWidth,nHeight参数,改变窗口的大小和位置。6.响应消息WM_KEYDOWN,用MessageBox弹出消息框,并显示“你好,你按下了键盘!”。项目2:DirectX程序基础实验1.请参照教材-前言部分,完成DirectX9.0SDK的安装,以及VC6.0的开发环境配置。2.用VC6.0打开DirectX例程D3D9Init工程,列出工程中各个文件的内容,并完成编译以及运行。给出工程中头文件(include)目录、库(lib)目录以及所需要库文件名称的设置情况,请以截图并注释的方式给出。3.请用VC6.0中设置程序运行断点的方式,观察D3D9Init程序的运行流程,写出D3D9Init程序的函数调用流程图。4.熟悉函数Direct3DCreate9()、GetDeviceCaps()、CreateDevice()等各个函数的参数和功能,并写出以上三个函数(每个函数)至少两种以上参数设置方式,并给出相关的功能测试结果。5.请熟悉IDirect3DDevice9*Device接口的Clear()函数功能,并修改其中Color参数,改变窗口画面清除后的颜色。项目3:DirectX程序数学运算基础实验1.用D3DXVECTOR3类,进行向量的加、减、数乘等运行,给出运算公式以及实验计算结果,计算结果可以用VC6.0中的Watch方式给出。2.用D3DXVect3Dot函数,进行向量的点积运算,给出运算公式,以及实验结果,计算结果可以用VC6.0中的Watch方式给出。3.用D3DXVect3Cross函数,进行向量的叉积运算,给出运算公式,以及实验结果,计算结果可以用VC6.0中的Watch方式给出。4.用D3DXMATRIX类,进行矩阵的加、数乘、相等运算,给出运算公式以及实验计算结果,计算结果可以用VC6.0中的Watch方式给出。三、实验环境系统平台:Windowsxp/Windows7相关软件:MicrosoftVisualStudio2005、MicrosoftVisualStudio6.0四、实验过程项目1:Win32程序基础实验1.请参照教材-附录A“windows程序设计”-第2节的内容,建立一个Win32应用程序。步骤:打开VC6.0,选择菜单File—New—prejects,创建一个Win32Application,输入工程名,如下图:(后续步骤与控制台应用程序类似)2.熟悉CreateWindow函数的各个参数CreateWindow函数声明如下:HWNDCreateWindow(LPCTSTRlpClassName,LPCTSTRlpWindowName,DWORDdwStyle,intX,intY,intnWidth,intnHeight,HWNDhWndParent,HMENUhMenu,HANDLEhInstance,LPVOIDlpParam);对CreateWindow函数的各个参数说明如下(按顺序):lpClassName——想要创建窗口的窗口类的名称(C字符串)。lpWindowName——创建的窗口名称(C字符串),同时该名称将会在窗口的标题栏中显示。dwStyle——创建的窗口类型。X——窗口左上角的x坐标。Y——窗口左上角的y坐标。nWidth——以像素为单位的窗口宽度。nHeight——以像素为单位的窗口高度。hWndParent——指向窗口对应的父窗口的句柄。hMenu——指向菜单的句柄。hInstance——指向应用程序实例句柄。lpParam——指向用户自定义数据的指针。3.设置CreateWindow()中的lpWindowName参数,将窗口的标题改为“名字-学号-WIN32基础程序”.运行结果截图:4.尝试CreateWindow()中的dwStyle参数各种标志组合,来修改窗口的风格。窗口的风格有很多种,下面举一例:操作代码:运行结果:6.响应消息WM_KEYDOWN,用MessageBox弹出消息框,并显示“你好,你按下了键盘!”。操作代码:运行结果:项目2:DirectX程序基础实验1.已完成DirectX9.0SDK的安装,以及VC6.0的开发环境配置。2.用VC6.0打开DirectX例程D3D9Init工程,列出工程中各个文件的内容,并完成编译以及运行。给出工程中头文件(include)目录、库(lib)目录以及所需要库文件名称的设置情况,请以截图并注释的方式给出。头文件设置情况:库文件设置情况:其他库文件的设置情况:3.请用VC6.0中设置程序运行断点的方式,观察D3D9Init程序的运行流程,写出D3D9Init程序的函数调用流程图。首先,程序从WinMain函数开始,在WinMain函数中执行了下列操作:(1)调用InitD3D()初始化主显示窗口和Direct3D.(2)调用Setup函数来设置程序资源。(3)进入消息循环后使用Display函数进行图形渲染。(4)调用Cleanup函数清理程序。(5)最后调用Release()释放IDirect3DDevice9接口。4.熟悉函数Direct3DCreate9()、GetDeviceCaps()、CreateDevice()等各个函数的参数和功能,并写出以上三个函数(每个函数)至少两种以上参数设置方式,并给出相关的功能测试结果。(1)Direct3DCreate9函数的参数必须指定为D3D_SDK_VERSION,从而可以保证程序建立在正确的版本上,如果该函数调用不成功,将返回一个空指针。(2)GetDeviceCaps函数的功能是获得主显示设备的性能并填充D3DCAPS9对象。第二个参数DeviceType可以设置为D3DDEVTYPE_HAL或者D3DDEVTYPE_REF。完了之后将要使用的顶点处理类型被保存在变量vp中,供CreateDevice函数使用。两者设置截图基本一样,如下:(3)CreateDevice函数的功能是创建一个IDirect3DDevice9接口。第二个参数DeviceType可以设置为D3DDEVTYPE_HAL或者D3DDEVTYPE_REF,第四个参数可以设置为D3DCREATE_HARDWARE_VERTEXPROCESSING或D3DCREATE_SOFTWARE_VERTEXPROCESSING。这两种设置结果截图也基本一样:5.请熟悉IDirect3DDevice9*Device接口的Clear()函数功能,并修改其中Color参数,改变窗口画面清除后的颜色。该函数可以分别把后缓冲区清除为黑色,并将深度缓冲区清除为1.0以及模板缓冲区清除为0,而且只有在程序没被暂停的情况下才进行渲染操作。操作代码:运行结果:项目3:DirectX程序数学运算基础实验1.用D3DXVECTOR3类,进行向量的加、减、数乘等运行,给出运算公式以及实验计算结果,计算结果可以用VC6.0中的Watch方式给出。加法:计算结果:减法:计算结果:数乘:计算结果:2.用D3DXVec3Dot函数,进行向量的点积运算,给出运算公式,以及实验结果,计算结果可以用VC6.0中的Watch方式给出。点乘:计算结果:3.用D3DXVec3Cross函数,进行向量的叉积运算,给出运算公式,以及实验结果,计算结果可以用VC6.0中的Watch方式给出。叉乘:计算结果:4.用D3DXMATRIX类,进行矩阵的加、数乘、相等运算,给出运算公式以及实验计算结果,计算结果可以用VC6.0中的Watch方式给出。加法:计算结果:数乘:计算结果:相等:计算结果:五、实验总结经过本次实验的练习,我认为我已经基本理解并掌握了Win32应用程序的原理和工作流程,并学会如何创建Win32应用程序。并且通过具体的实例,我已经基本上理解并掌握了D3D程序流程。知道如何初始化D3D,而且也熟悉了函数Direct3DCreate9()、GetDeviceCaps()、CreateDevice()、Clear()的参数和功能。此次实验,让我深深地感觉到,例子比纯理论好理解的多,而且有了例子,更具吸引力,也更有继续学习的动力,所以结合实例的讲解更能达到教学的目的。