《几何模型显》PPT课件_第1页
《几何模型显》PPT课件_第2页
《几何模型显》PPT课件_第3页
《几何模型显》PPT课件_第4页
《几何模型显》PPT课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章坐标系与基本图元,Direct3D坐标系,在空间几何中,绝大多数情况下使用笛卡尔坐标系为参照系来表示图形,表三维图形时需要使用三维笛卡尔坐标系。三维笛卡尔坐标系根据z坐标轴相对x,y坐标轴方向的不同,可分为左手坐标系和右手坐标系,它们的区别方法是:将右手食指、中指、无名指和小拇指顺着x轴正向到y轴正向旋转的方向,如果大拇指的方向和z轴正向相同,就是右手坐标系,反之就左手坐标系。,左手坐标系,右手坐标系,Direct程序中常用坐标系,(150,50),(50,250),(250,250),本程序执行结果,FVF灵活顶点格式,FVF(FlexibleVertexFormat)用来描述在顶点缓冲区中的顶点存储格式中包含了哪些属性。根据图形显示的需要,顶缓冲区中的格式可以包含顶点坐标、颜色、法线方向、纹理坐标等属性。,FVF标记数据的用途,FVF灵活顶点格式说明符,structCUSTOMVERTEXfloatx,y,z,rhw,color;#defineD3DFVF_CUSTOMVERTEX(D3DFVF_XYZ|D3DFVF_DIFFUSE)CUSTOMVERTEXvertices=150.0f,50.0f,0.5f,1.0f,0 xffff0000,/x,y,z,rhw,color250.0f,250.0f,0.5f,1.0f,0 xff00ff00,50.0f,250.0f,0.5f,1.0f,0 xff00ffff,;,三角形的FVF定义如下:,文件首部,#includeLPDIRECT3D9g_pD3D=NULL;LPDIRECT3DDEVICE9g_pd3dDevice=NULL;LPDIRECT3DVERTEXBUFFER9g_pVB=NULL;/顶点缓冲区structCUSTOMVERTEXFLOATx,y,z,rhw;/顶点坐标DWORDcolor;/顶点颜色;#defineD3DFVF_CUSTOMVERTEX(D3DFVF_XYZRHW|D3DFVF_DIFFUSE),颜色值的顺序,0 xAARRGGBBALPHA值:0 x000 xffR、G、B均为:0 x000 xff,HRESULTInitVB()CUSTOMVERTEXvertices=150.0f,50.0f,0.5f,1.0f,0 xffff0000,/x,y,z,rhw,color250.0f,250.0f,0.5f,1.0f,0 xff00ff00,50.0f,250.0f,0.5f,1.0f,0 xff00ffff,;if(FAILED(g_pd3dDevice-CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),0,D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT,创建顶点缓冲区,在使用顶缓冲区绘图前,首先要创建顶点缓冲区,其原型如下:HRESULTIDirect3DDevice9:CreateVertexBuffer(UINTLength,/顶点缓冲区的大小DWORDUsage,/顶点缓冲区的属性DWORDFVF,/灵活顶点格式D3DPOOLPool,/在内存中的位置IDirect3DVertexBuffer9*ppVertexBuffer,/缓冲/区指针Handle*pSharedHandle/保留参数),CreateVertexBuffer()参数说明,Usage:一般设为0或取下列值,D3DPOOL取值,向顶点缓冲区写入数据,如果不向顶点缓冲区填入有用数据的话,顶点缓冲是没有用的,所以必须向顶点缓冲填充数据,在写入数据前需要调用Lock函数加锁缓冲区。,Lock()函数原型,HRESULTIDirect3DVertexBuffer:Lock(UINTOffsetToLock,/加锁地址UINTSizeToLock,/加锁内存大小VOID*ppbDATA,/内存指针地址DWORDflags/加锁属性);,Lock参数说明,缓冲区加锁属性可取下列值或0,顶点缓冲区图形显示,Render()函数,VOIDRender()g_pd3dDevice-Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,255),1.0f,0);if(SUCCEEDED(g_pd3dDevice-BeginScene()g_pd3dDevice-SetStreamSource(0,g_pVB,0,sizeof(CUSTOMVERTEX);g_pd3dDevice-SetFVF(D3DFVF_CUSTOMVERTEX);g_pd3dDevice-DrawPrimitive(D3DPT_TRIANGLELIST,0,1);g_pd3dDevice-EndScene();g_pd3dDevice-Present(NULL,NULL,NULL,NULL);,SetStreamSource()函数原型,HRESULTIDirect3DDevice9:SetStreamSource(UINTStreamNumber,/渲染数据流序号IDirect3DVertexBuffer9*pStreamData,/进行绑定链接的顶点缓冲区指针UINTOffsetInBytes,/进行绑定链接的渲染数据流的起始位置UINTStride/渲染数据流中一个顶点所占的内存大小。);,SetFVF()函数原型,HRESULTIDirect3DDevice9:SetFVF(DWORDFVF/渲染数据流中的灵活顶点格式);,D3D图元绘制函数,HRESHULTIDirect3DDevice9:DrawPrimive(D3DPRIMIVETYPEPrimitiveType,/图元类型UINTStartVertex,/起始点位置UINTPrimitiveCount/图元数目);,6种基本图元,g_d3dDevice-DrawPrimitive(D3DPT_POINTLIST,0,6),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),g_d3dDevice-DrawPrimitive(D3DPT_LINELIST,0,3),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),g_d3dDevice-DrawPrimitive(D3DPT_LINESTRIP,0,5),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),g_d3dDevice-DrawPrimitive(D3DPT_TRIANGLELIST,0,2),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),g_d3dDevice-DrawPrimitive(D3DPT_TRIANGLESTRIP,0,4),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),(0.0,5.0,0.0),D3DPTTRIANGLEFAN示例,基本图元显示实例,使用索引缓冲区绘制图形,顶点结构及类型的定义,StructCUSTOMVERTEXFLOATx,y,z,rhw;DWORDcolor;#defineD3DFVF_CUTOMVERTEX(D3DFVF_XYZRHW|D3DFVF_DIFFUSE),顶点数组及索引数组的定义,CUSTOMVERTEXg_Vertices9;g_Vertices0.x=300;g_Vertices0.y=250;g_Vertices0.z=0.5f;g_Vertices0.rhw=1.0f;g_Vertices0.color=0 xffff0000;for(inti=0;iCreateIndexBuffer(sizeof(g_Index),0,D3DFMT_INDEX16,D3DPOOL_DEFAULT,CreateIndexBuffer函数原型,CreateIndexBuffer(UINTLength,DWORDUsage,D3DFORMATformat,D3DPOOLPool,IDirect3DIndexBuffer9*ppIndexBuffer,Handle*pHandle);,使用索引绘图的代码片段,if(SUCCEEDED(g_pD3DDevice-BeginScene()g_pD3DDevice-SetStreamSource(0,g_pVB,0,sizeof(CUSTOMVERTEX);g_pD3DDevice-SetFVF(D3DFVF_CUSTOMVERTEX);g_pD3DDevice-SetIndices(g_pIB);g_pD3DDevice-DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,4,0,2);g_pD3DDevice-EndScene();g_pD3DDevice-Present(NULL,NULL,NULL,NULL);,D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论