Unity基本图形绘制.ppt
《Unity基本图形绘制.ppt》由会员分享,可在线阅读,更多相关《Unity基本图形绘制.ppt(30页珍藏版)》请在三一办公上搜索。
1、绘制基本图形,学习重点:DX基本图元图元绘制,学习目的:能够灵活使用各种图元,1.图形绘制,1.1图元,游戏中的模型不管有多复杂,都是有点、线、三角形面拼接起来的。,1.图形绘制,1.1图元,图元(Primitive)是由Direct3D定义的基本的图形表示单位,所有的复杂物体都是由这些基本图元来组合而成的。,1.图形绘制,1.1图元,DrawPrimitiveUP是Direct3D提供的基本图元绘制函数之一。,HRESULT DrawPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType,/基本图元类型 UINT PrimitiveCount/绘制的图元的数量
2、const void*pVertexStreamZeroData,/顶点的起始地址 UINT VertexStreamZeroStride/每个顶点所占的字节数);,点列(POINTLIST),点列由一系列的顶点组成。,g_pDevice-DrawPrimitiveUP(D3DPT_POINTLIST,6,数组首地址,sizeof(一个顶点字节数);,1.图形绘制,1.1图元,线列(LINELIST),线列由一系列的线段组成。,线带(LINESTRIP),线带由一系列的线段组成,前一个线段的终点是下一条线段的起点。,g_pDevice-DrawPrimitiveUP(D3DPT_LINELIS
3、T,3,数组首地址,sizeof(一个顶点字节数);,g_pDevice-DrawPrimitiveUP(D3DPT_LINESTRIP,5,数组首地址,sizeof(一个顶点字节数);,1.图形绘制,1.1图元,三角形列由一系列的三角形组成。,三角形列(TRIANGLELIST),三角形带(TRIANGLESTRIP),三角形带由一系列的三角形组成,除了第一个三角形,其他的三角形只需要输入第三个顶点,这个顶点与前一个三角形中的后两个顶点组成新的三角形。,g_pDevice-DrawPrimitiveUP(D3DPT_TRIANGLELIST,2,数组首地址,sizeof(一个顶点字节数);,
4、g_pDevice-DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,4,数组首地址,sizeof(一个顶点字节数);,1.图形绘制,1.1图元,三角形扇(TRIANGLEFAN),三角形扇是以扇形扩展的方式来定义三角形序列的。,g_pDevice-DrawPrimitiveUP(D3DPT_TRIANGLEFAN,3,数组首地址,sizeof(一个顶点字节数);,1.图形绘制,1.2 顶点的格式,顶点(Vertex)是一切物体的最基本元素,对应着三维空间坐标系中的一个点。,在Direct3D中,描述一个点的方法非常丰富灵活,可以通过特殊的组合来描述空间中点的各种属性。D
5、irect3D引入了一个称为灵活顶点格式(FVF:Flexible Vertex Format)的概念。,灵活顶点格式是用来描述顶点属性的一种方法,这种方法可以由自己来定义顶点格式。FVF这种灵活的顶点组织方式使图形绘制中只需要使用顶点必要的组成部分,从而节省了大量的内存带宽和渲染时间。,1.图形绘制,1.2 顶点的格式,1.图形绘制,1.2 顶点的格式,Direct3D定义的灵活顶点格式可以是以下类型的组合:,如果使用灵活顶点格式,必须以以下顺序来格式化所有的顶点:位置,RHW,混合加权值,顶点法线,反射颜色,纹理坐标集(1-8套)。,1.图形绘制,1.2 顶点的格式,顶点格式的数据类型,1
6、.图形绘制,1.3 顶点的定义,1.声明一个包含经过转换的坐标和点的颜色#define D3DFVF_CUSTOMVERTEX(D3DFVF_XYZRHW|D3DFVF_DIFFUSE)Struct CUSTOMVERTEXFLOAT x,y,z,rhw;/经过坐标转换的顶点格式DWORD color;/顶点漫反射颜色值2.声明一个顶点的具体坐标,点的法向量坐标,纹理坐标struct CUSTOMVERTEX FLOAT x,y,z;FLOAT nx,ny,nz;FLOAT tu,tv;#define D3DFVF_CUSTOMVERTEX(D3DFVF_XYZ|D3DFVF_NORMAL|D
7、3DFVF_TEX1);,1、根据自己的需要定义点格式2、定义完点格式后,必须声明该点格式3、定义顶点例如:,1.图形绘制,1.3 顶点的定义,/声明顶点位置和漫反射色数据。CUSTOMVERTEX g_Vertices=/x y z rhw 漫反射色 100.0f,100.0f,0.0f,1.0f,0 xffff0000,200.0f,100.0f,0.0f,1.0f,0 xff00ff00 100.0f,200.0f,0.0f,1.0f,0 xff0000ff,200.0f,200.0f,0.0f,1.0f,0 xffffffff,;,1、二维图形的绘制,如果以屏幕坐标系定义,顶点的格式必
8、须为D3DFVF_XYZRHW2、若图元为三角形,必须保证顶点的定义顺序为顺时针。DX默认仅渲染顺时针三角形3、若使用的三角形strip图元,仅需保证第一个三角形为顺时针即可。,注意点:,1.3.1屏幕坐标系定义顶点,1.图形绘制,1.3 顶点的定义,1、相对坐标系,以窗口的中心为原点,X轴往右为正,Y轴往上为正,Z轴往里为正。不管窗口宽高,X轴范围为-11,Y轴范围为-11,Z轴范围为01.1、二维图形的绘制,如果以相对坐标系定义,定义的格式必须为D3DFVF_XYZ,注意点:,/声明顶点位置和漫反射色数据。CUSTOMVERTEX g_Vertices=/x y z 漫反射色-0.5f,0
9、.5f,0.0f,0 xffff0000,0.5f,0.5f,0.0f,0 xff00ff00-0.5f,-0.5f,0.0f,0 xff0000ff,0.5f,-0.5f,0.0f,0 xffffffff,;,1.3.2 相对坐标系定义顶点,1.图形绘制,1.4 图形绘制,g_pDevice-SetFVF(D3DFVF_CUSTOMVERTEX);g_pDevice-DrawPrimitiveUP(D3DPT_TRIANGLEFAN,3,数组首地址,sizeof(一个顶点字节数);,绘制函数之前一定要通知显卡所绘制图形的顶点格式,图形渲染工作一般都是在函数BeginScene与EndScen
10、e之间完成。,1.图形绘制,1.5 顶点缓冲区,顶点缓冲区(Vertex Buffer)是Direct3D用来保存顶点数据的内存缓冲区。顶点缓冲区可以设置在显卡的显存中、AGP内存中或是在系统内存中。如果指定缓冲区空间分配在显存中,能够大大的提高渲染效率。,HRESULT CreateVertexBuffer(UINT Length,/顶点缓冲区的大小,按字节数算 DWORD Usage,/顶点缓冲区属性 DWORD FVF,/灵活顶点格式 D3DPOOL Pool,/顶点缓冲区的内存类型 IDirect3DVertexBuffer9*ppVertexBuffer,/顶点缓冲区指针地址 HAN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Unity 基本 图形 绘制
链接地址:https://www.31ppt.com/p-5308184.html