资源描述:
《directX游戏编程实验四吴凉凉 2012329700012》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、浙江理工大学《DirectX游戏编程》实验报告2013~2014学年第1学期学院信息学院班级12数字媒体技术1班姓名吴凉凉学号2012329700012任课教师(上课时间:第10周345节)数字媒体技术专业2014年5月15日《DirectX游戏编程》实验报告实验名称:DirectX彩色图形绘制实验实验地点:机1所使用的工具软件及环境:安装Windows操作系统(WindowsXp)和VC的1台计算机。一、实验平台lWindowsXPprofessional操作系统。lVC6.0集成开发环境.项目1:D
2、irectX材质和光照实验在例程Cube的基础上,完成以下步骤:1)实现平行光照明。2)黄色材质设定。3)增加一个蓝色点光源。4)实现材质设定的透明度,实现50%透明度。在实验过程中注意灯光设置的方向、颜色等参数设定。项目2:DirectX纹理实验在项目1的程序基础上完成一下步骤:1)给立方体增加纹理,图片请自己准备。2)制作alpha通道纹理图,实现立方体的透明纹理。在实验过程中注意材质的透明度对纹理设定的影响。二、实验代码及结果1、黄色材质设定。//Turnonlighting.Device->Se
3、tRenderState(D3DRS_LIGHTING,true);D3DMATERIAL9mtrl;mtrl.Ambient=d3d::YELLOW;mtrl.Diffuse=d3d::YELLOW;mtrl.Specular=d3d::YELLOW;mtrl.Emissive=d3d::BLACK;mtrl.Power=5.0f;Device->SetMaterial(&mtrl);黄色材质设定。1、实现平行光照明。D3DLIGHT9dir;::ZeroMemory(&dir,sizeof(dir)
4、);dir.Type=D3DLIGHT_DIRECTIONAL;dir.Diffuse=d3d::WHITE;dir.Specular=d3d::WHITE0.3f;dir.Ambient=d3d::WHITE0.6f;dir.Direction=D3DXVECTOR3(1.0f,0.0f,0.0f);Device->SetLight(0,&dir);Device->LightEnable(0,true);Device->SetRenderState(D3DRS_NORMALIZENORMALS,tru
5、e);Device->SetRenderState(D3DRS_SPECULARENABLE,true);将语句:Device->SetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME);注释后得3、增加一个蓝色点光源。D3DXVECTOR3pos(0.0f,0.0f,5.0f);D3DXCOLORc=d3d::BLUE;D3DLIGHT9point=d3d::InitPointLight(&pos,&c);Device->SetLight(1,&point);D
6、evice->LightEnable(1,true);4、实现材质设定的透明度,实现50%透明度。mtrl.Diffuse.a=0.5f;Device->CreateVertexBuffer(24sizeof(Vertex),D3DUSAGE_WRITEONLY,Vertex::FVF,D3DPOOL_MANAGED,&VB,0);Device->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_DIFFUSE);Device->SetTextureStageS
7、tate(0,D3DTSS_ALPHAOP,D3DTOP_SELECTARG1);Device->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);Device->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);将原来的材质改成白色:D3DMATERIAL9mtrl;mtrl.Ambient=d3d::WHITE;mtrl.Diffuse=d3d::WHITE;mtrl.Specular=d3d::
8、WHITE;mtrl.Emissive=d3d::BLACK;mtrl.Power=5.0f;mtrl.Diffuse.a=0.5f;Device->SetMaterial(&mtrl);将点光源也改成白色:D3DXVECTOR3pos(1.0f,1.0f,0.0f);D3DXCOLORc=d3d::WHITE;D3DLIGHT9point=d3d::InitPointLight(&pos,&c);//SetandEnabletheligh