关于图元

           在三维图形领域中,一个立体物体我们经常是使用多组多边形来包围一个物体表面来近似的模拟物体的。如果有接触3DMAX,MAYA等3D
建模软件那更容易理解一些。我们的物体是中空的,仅表面上由一些面片拼接而成,而这些面片通常又是由一个一个更小的图元来构成的。

在D3D中,我们采用的多是三角形网格(Triangle Mesh)来进行拼接。
但是实际上D3D图元类型是分六种,三角形图元的创建方式也有三种。了解它们的
原理对我们优化程序算法有很大的好处。

点列集合       D3DPT_POINTLIST     一组点的集合
线列集合       D3DPT_LINELIST           一组线段的集合
线带集合       D3DPT_LINESTRIP       首尾相连的线段的集合
三角形列       D3DPT_TRIANGLELIST           一组三角形的集合
三角形带       D3DPT_TRIANGLESTRIP   首尾相连的三角形,有两个顶点重合
三角形扇       D3DPT_TRIANGLEFAN           组成扇形的一组三角形

1:绘制点是相当容易的,我们给出点的空间坐标,再分别绘制就好了
如:g_pD3DDevice->DrawPrimitive(D3DPT_POINTLIST, 0, 6);   //会绘制出6个点
恩,其中g_pD3DDevice是D3D设备指针,函数第一个参数是我们设置的灵活顶点格式结构,0是偏移量,设置为0代表从FVF结构中第一个顶点
开始绘制,6是从偏移量开始绘制6个图元。

2:线列
g_pD3DDevice->DrawPrimitive(D3DPT_LINELIST, 0, 3);    //会绘制出3个未必相连的线段
参数和点差不多了。这里系统会默认的将FVF结构中的第1个点和第2个点连接成一个线段,第3个点和第4个点连接成一个线段,如此反复,结
果我们得到的将是一系列未必连接的线段。

3:线带
g_pD3DDevice->DrawPrimitive(D3DPT_LINESTRIP, 0, 5);  //会绘制出5个必定连接的线段
参数不说了,值得注意的是线带和线列区别在于,系统会默认的将第1,2个点连接之后,会再将2,3点连接,之后3,4点,如此类推,我们
得到的将会是一系列连接起来的线段,当然在相同点数下,获得线段会比线列多,

4:三角形扇
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 4);  //会绘制出4个紧连的三角行
这个绘制的方法是0,1,2点绘制一个三角形,之后0,2,3点绘制一个三角形,之后是0,3,4。。。呃,还是一会画图好

5:三角行列
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);  //会绘制出2个不连接的三角形
这个绘制方法是0,1,2点绘制一个三角后,3,4,5点绘制一个三角。

6:三角形带
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 4);  //会绘制出4个连接的三角形
这个绘制方法是0,1,2点绘制一个三角形,1,2,3绘制一个三角行,2,3,4绘制一个三角行。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值