资源描述:
《《几何模型显》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章坐标系与基本图元Direct3D坐标系在空间几何中,绝大多数情况下使用笛卡尔坐标系为参照系来表示图形,表三维图形时需要使用三维笛卡尔坐标系。三维笛卡尔坐标系根据z坐标轴相对x,y坐标轴方向的不同,可分为左手坐标系和右手坐标系,它们的区别方法是:将右手食指、中指、无名指和小拇指顺着x轴正向到y轴正向旋转的方向,如果大拇指的方向和z轴正向相同,就是右手坐标系,反之就左手坐标系。xyzxyzxyz左手坐标系右手坐标系Direct程序中常用坐标系(150,50)(50,250)(250,250)本程序执行结果FVF灵活顶点格式FVF(FlexibleVertex
2、Format)用来描述在顶点缓冲区中的顶点存储格式中包含了哪些属性。根据图形显示的需要,顶缓冲区中的格式可以包含顶点坐标、颜色、法线方向、纹理坐标等属性。名称用 途顶点坐标表现顶点三维坐标RHW坐标系的W值,具有该值才是完成变换的顶点结合浮点值用于蒙皮制作,详见后面介绍法线向量表现顶点的法线向量,主要用于光源处理扩散光RGBA(r,g,b,a)宏值,表现苦战的扩散光颜色反射光RGBA(r,g,b,a)宏值,表现项占的反射色纹理坐标表现纹理坐标值,D3D可以同时使用8个纹理坐标,比如:想要进行法线,就可以将第一个值设定为扩散数据,将第二个值设定为法线贴图数据。F
3、VF标记数据的用途值说 明D3DFVF_DIFFUSE顶点格式包含漫反射颜色值D3DFVF_NORMAL顶点格式包含法线向量,不能和D3DFVF_XYZRHW同时使用D3DFVF_PSIZE顶点信息指明绘制点的大小D3DFVF_SPECULAR顶点格式包含镜面反射颜色值D3DFVF_XYZ顶点格式包含未经坐标转的顶点坐标,不能和D3DFVF_XYZRHW同时使用D3DFVF_XYZRHW顶点格式包含经过坐标转换的顶点坐标,不能和D3DFVF_NORMAL或D3DFVF_XYZ同时使用。D3DFVF_XYZB1……D3DFVF_XYZB5顶点格式包含用于骨骼动
4、画的顶点和顶点对骨骼的权值信息。D3DFVF_XYZW顶点格式包含经过坐标转换和裁判的顶点坐标,只可用于可编程顶点流水线D3DFVF_TEXT0-D3DFVF_TEXT8顶点格式包含0-8个纹理坐标,用于纹理绘制。FVF灵活顶点格式说明符structCUSTOMVERTEX{floatx,y,z,rhw,color;};#defineD3DFVF_CUSTOMVERTEX(D3DFVF_XYZ
5、D3DFVF_DIFFUSE)CUSTOMVERTEXvertices[]={{150.0f,50.0f,0.5f,1.0f,0xffff0000,},//x,y,z,
6、rhw,color{250.0f,250.0f,0.5f,1.0f,0xff00ff00,},{50.0f,250.0f,0.5f,1.0f,0xff00ffff,},};三角形的FVF定义如下:文件首部#includeLPDIRECT3D9g_pD3D=NULL;LPDIRECT3DDEVICE9g_pd3dDevice=NULL;LPDIRECT3DVERTEXBUFFER9g_pVB=NULL;//顶点缓冲区structCUSTOMVERTEX{FLOATx,y,z,rhw;//顶点坐标DWORDcolor;//顶点颜色};#define
7、D3DFVF_CUSTOMVERTEX(D3DFVF_XYZRHW
8、D3DFVF_DIFFUSE)颜色值的顺序0xAARRGGBBALPHA值:0x00~0xffR、G、B均为:0x00~0xffHRESULTInitVB(){CUSTOMVERTEXvertices[]={{150.0f,50.0f,0.5f,1.0f,0xffff0000,},//x,y,z,rhw,color{250.0f,250.0f,0.5f,1.0f,0xff00ff00,},{50.0f,250.0f,0.5f,1.0f,0xff00ffff,},};if(FAILED(g_pd
9、3dDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),0,D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT,&g_pVB,NULL))){returnE_FAIL;}VOID*pVertices;if(FAILED(g_pVB->Lock(0,sizeof(vertices),(void**)&pVertices,0)))returnE_FAIL;memcpy(pVertices,vertices,sizeof(vertices));g_pVB->Unlock();returnS_OK;}
10、创建顶点缓冲区在使用顶缓冲区绘图前,首