DrawPrimitive

对于DrawPrimitive函数,MSDN中是这样的
HRESULT DrawPrimitive(
D3DPRIMITIVETYPE PrimitiveType,
UINT StartVertex,
UINT PrimitiveCount
);
第一个参数是一个标记,它通知 Direct3D 绘制哪种类型的物件;
第二个参数是第一个顶点的索引;
第三个参数通知绘制的物件的数目;
其中D3DPRIMITIVETYPE 为枚举型,格式
typedef enum D3DPRIMITIVETYPE
{
    D3DPT_POINTLIST = 1,
    D3DPT_LINELIST = 2,
    D3DPT_LINESTRIP = 3,
    D3DPT_TRIANGLELIST = 4,
    D3DPT_TRIANGLESTRIP = 5,
    D3DPT_TRIANGLEFAN = 6,
    D3DPT_FORCE_DWORD = 0x7fffffff,
} D3DPRIMITIVETYPE, *LPD3DPRIMITIVETYPE;


D3DPT_POINTLIST 
点列表:将一连串的顶点作为像素进行绘制
D3DPT_LINELIST 
线列表:彼此孤立(彼此没有发生连接)的一些直线
D3DPT_LINESTRIP
线带:一连串连接的直线。每条直线都是从前一个顶点到当前顶点绘制而成,很像连接点
D3DPT_TRIANGLELIST
三角形列表:这个设置比较简单,索引区每隔三个一个三角形。 
D3DPT_TRIANGLESTRIP
三角形带:索引区中每三个一个三角形,前一个三角形的后两个顶点和后一个三角形的前两个顶点重合。即绘制的第一个三边形使用3个顶点,后面绘制的每一个三角形只使用一个额外的顶点。
D3DPT_TRIANGLEFAN 
   三角扇形:索引区中第一个点为公共顶点,后面依次展开,每两个点和公共定点组成三角形。


D3DPT_FORCE_DWORD 
这个好像很少用到,好像与什么32位有关,具体啥意思不是很清楚,想知道可以看下面MSDN英文原文




具体实现代码如下:
//从第0个点开始用D3DPT_POINTLIST模式渲染6个点
g_pd3dDevice->DrawPrimitive(D3DPT_POINTLIST,0,6);


//从第0个点开始用D3DPT_LINELIST 模式渲染3条线
g_pd3dDevice->DrawPrimitive(D3DPT_LINELIST,0,3);


//从第0个点开始用D3DPT_LINESTRIP 模式渲染5条线
g_pd3dDevice->DrawPrimitive(D3DPT_LINELIST,0,5);


//从第0个点开始用D3DPT_TRIANGLELIST 模式渲染2个三角形
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);


//从第0个点开始用D3DPT_TRIANGLESTRIP 模式渲染4个三角形
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,4);


当第一个参数是D3DPT_TRIANGLE,渲染三角型图元时,顶点按照顺时针方向排列才能正确渲染


//从第0个点开始用D3DPT_TRIANGLEFAN模式渲染3个三角形
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,3);


所有计算机中复杂的图形都是用这几种点的渲染方式实现的,虽然简单但是很重要。通过这次的内容,我们理论上就能够把我们想显示的任何平面的图像都显示到D3D窗口里了
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值