资源描述:
《游戏软件设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《游戏软件设计》游戏软件运行原理OpenGL与DirectX是目前开发游戏用的最多的两个APIOpenGL(OpenGL:OpenGraphicsLibrary):具有移植性,与硬件无关;国际公认的3D图形工业标准;OpcnGL与窗口系统无关,不提供任何交互手段,必须由程序员自行开发;OpenGLAPI是低级C函数,不提供可重用的对彖库或者应用程序框架通常说的DirectX有两层含义:1.DirectXSDK(DirectX开发工具包);2.DirectXRuntime(运行时)DirectXr
2、h很多功能组件构成:Direct3D、Directlnput^DirectSound>DirectPlay等Direct3D是负责三维图形的一个组件,也是DirectX中最重要、最复杂的组成部分Direct3D体系结构图形硬件Direct3D程序基本结构创建一个Windows窗口初始化Direct3DDirectX3D基本图元•顶点集合(D3DPT_POINT)StructCUSTOMVERTEX{floatx,y,z;1;CUSTOMVERTEXVerticesr1={{-5.0,-5.0,0
3、.0},{0.0,5.0,0.0},{5.0,-5.0,0.0},{10.0,5.0,0.0},{15.0,・5.0,0.0},{20.0,5.0,0.0}};g_pd3dDevice->DrawPrimitive(D3DPT_POINTLIST,0,6);DrawPrimitive(指定绘制图元类型,顶点流起始位置,指定绘制图元的数量)•线段集合(D3DPT_LINELIST)5rO>g_pd3dDevice->DrawPrimitive(D3DPT_LINELIST,O,3);•线段Stri
4、p(D3DPT_LINESTRIP)cxs,-9.cog_pd3dDevice->DrawPrimitive(D3DPT_LINESTRIP,0,5);•三角形集合(D3DPTTRIANGLELIST)g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);•三角形Strip(D3DPT_TRIANGLESTRIP)g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIR0,4);三角形Fan(D3DPT_TR
5、IANGLEFAN)即三角扇形g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,0,4);顶点缓冲区(vertexbuffer)是用來保存顶点数据的内存缓冲区。顶点缓冲区中的顶点可以包括顶点坐标、颜色、纹理等信息,我们町以使用灵活顶点格式(FlexibleVertexFormat,FVF)进行描述和设置如何使用顶点缓冲区:■第一步:定义顶点结构structCUSTOMVERTEX{FLOATx,y,z,rhw;DWORDcolor;};■第二步:定义灵活
6、顶点格式#defineD3DFVF_MY(D3DFVF_XYZRHW
7、D3DFVF_DIFFUSE)D3DFVF_DIFFUSE:顶点数据包含漫反射颜色值D3DFVF_XYZRHW:顶顶数据包含经过坐标变换的顶点坐标D3DFVF_XYZ:顶点数据包含未经坐标变换的顶点坐标D3DFVF_NORMAL:顶点数据包含法线向量■第三步:初始化顶点CUSTOMVERTEXvertices[]={{5O.Of,25O.Of,O.5f,1.Of,OxffffOOOO},{150.0f,50.0f,0.5f,1
8、.0f,0xff00ff00},{250.0f,250.0f,0.5f,l.Of,OxffOOOOff)};■第四步:创建顶点缓冲区LPDIRECT3DVERTEXBUFFER9g_pVB=NULL〃顶点缓冲区接口指针If(FAlLED(g_pd3dDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),0,D3DFVF_MY,D3DPOOL.DEFAULT,&g_pVB,NULL)))•CreateVertexBuffer:参数1:顶点缓冲区大小参数
9、2:顶点缓冲区属性,参数3:灵活顶点格式参数4:顶点缓冲区内存类型参数5:指向顶点缓冲区地址的指针参数6:NULL■第五步:填充顶点缓冲区VOID*pVertices;If(FAILED(g_pVB->Lock(0,sizeof(vertices),(void**)&pVertices,O)))returnE_FAIL;memcpy(pVertices,vertices,sizeof(vertices));g_pVB->Unlock();■第六步:渲染图形g_pd3dDevice->SetStr