功能:从当前输入数据流中渲染一组非索引,指定类型的图元。
HRESULT DrawPrimitive(
D3DPRIMITIVETYPE PrimitiveType,
UINT StartVertex,
UINT PrimitiveCount
);
第一个参数是一个标记,它通知 Direct3D 绘制哪种类型的物件;
第二个参数是第一个顶点的索引;
第三个参数通知绘制的物件的数目;
Return Values
如果这个执行成功,返回值是D3D_OK。如果方法失败,返回值可能是D3DERR_INVALIDCALL
Remarks
当从一个旧的应用程序转换到Direct3D9时,你必须添加一个申明IDirect3DDevice9::SetFVF用于固定管线,或者IDirect3DDevice9::SetVertexDeclaration 用于顶点着色器在你调用Draw之前.
其中 D3DPRIMITIVETYPE 为枚举型,格式D3DPT_POINTLIST
点列表:将一连串的顶点作为像素进行绘制
D3DPT_LINELIST
线列表:彼此孤立(彼此没有发生连接)的一些直线
D3DPT_LINESTRIP
线带:一连串连接的直线。每条直线都是从前一个顶点到当前顶点绘制而成,很像连接点
D3DPT_TRIANGLELIST
三角形列表:这个设置比较简单,索引区每隔三个一个三角形。
D3DPT_TRIANGLESTRIP
三角形带:索引区中每三个一个三角形,前一个三角形的后两个顶点和后一个三角形的前两个顶点重合。即绘制的第一个三边形使用3个顶点,后面绘制的每一个三角形只使用一个额外的顶点。
D3DPT_TRIANGLEFAN
三角扇形:索引区中第一个点为公共顶点,后面依次展开,每两个点和公共定点组成三角形。
其具体渲染效果如下图所示
D3DPT_POINTLIST D3DPT_LINELIST
D3DPT_LINESTRIP D3DPT_TRIANGLELIST
D3DPT_TRIANGLESTRIP D3DPT_TRIANGLEFAN
具体实现代码如下:
//从第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);
原文地址:http://apps.hi.baidu.com/share/detail/15040623
http://blog.csdn.net/lsmdiao0812/article/details/3166410