1、浙江理工大学DirectX 游戏编程实验报告2013 2014 学年第 1 学期 学 院 信息学院班 级 12 数字媒体技术 1 班姓 名 吴凉凉学 号 2012329700012任课教师 (上课时间:第 10 周 345 节)数字媒体技术专业20 14 年 5 月 15 日DirectX 游戏编程实 验 报 告实验名称: DirectX 彩色图形绘制实验实验地点:机 1所使用的工具软件及环境:安装 Windows 操作系统(Windows Xp)和 V C 的 1 台计算机。一、 实验平台Windows XP professional操作系统。VC6.0 集成开发环境.项目 1: Direc
2、tX 材质和光照实验在例程 Cube 的基础上,完成以下步骤:1)实现平行光照明。2)黄色材质设定。3)增加一个蓝色点光源。4)实现材质设定的透明度,实现 50%透明度。在实验过程中注意灯光设置的方向、颜色等参数设定。项目 2: DirectX 纹理实验在项目 1 的程序基础上完成一下步骤:1)给立方体增加纹理,图片请自己准备。2)制作 alpha 通道纹理图,实现立方体的透明纹理。在实验过程中注意材质的透明度对纹理设定的影响。2、实验代码及结果1、黄色材质设定。/ Turn on lighting. Device-SetRenderState(D3DRS_LIGHTING,true); D3
3、DMATERIAL9 mtrl; mtrl.Ambient = d3d:YELLOW;mtrl.Diffuse= d3d:YELLOW; mtrl.Specular = d3d:YELLOW; mtrl.Emissive = d3d:BLACK; mtrl.Power= 5.0f;Device-SetMaterial( 黄色材质设定。1、实现平行光照明。D3DLIGHT9 dir; :ZeroMemory( dir.Type = D3DLIGHT_DIRECTIONAL; dir.Diffuse = d3d:WHITE; dir.Specular= d3d:WHITE * 0.3f; dir.
4、Ambient= d3d:WHITE * 0.6f; dir.Direction= D3DXVECTOR3(1.0f, 0.0f, 0.0f);Device-SetLight(0, Device-LightEnable(0,true); Device-SetRenderState(D3DRS_NORMALIZENORMALS, true); Device-SetRenderState(D3DRS_SPECULARENABLE,true);将语句:Device-SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);注释后得3、增加一个蓝色点光源。D3
5、DXVECTOR3 pos(0.0f, 0.0f, 5.0f); D3DXCOLOR c = d3d:BLUE; D3DLIGHT9 point = d3d:InitPointLight( Device-SetLight(1, Device-LightEnable(1,true);4、实现材质设定的透明度,实现 50%透明度。mtrl.Diffuse.a = 0.5f;Device-CreateVertexBuffer( 24 *sizeof(Vertex), D3DUSAGE_WRITEONLY, Vertex:FVF, D3DPOOL_MANAGED, Device-SetTextureS
6、tageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE); Device-SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); Device-SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); Device-SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);将原来的材质改成白色:D3DMATERIAL9 mtrl; mtrl.Ambient = d3d:WHITE;mtrl.Diffuse
7、= d3d:WHITE; mtrl.Specular = d3d:WHITE; mtrl.Emissive = d3d:BLACK; mtrl.Power= 5.0f;mtrl.Diffuse.a = 0.5f;Device-SetMaterial( 将点光源也改成白色:D3DXVECTOR3 pos(1.0f, 1.0f, 0.0f); D3DXCOLOR c = d3d:WHITE; D3DLIGHT9 point = d3d:InitPointLight( / Set and Enable the light. Device-SetLight(1, Device-LightEnable(1,true);设置纹理成功!