6.绘制 3D基本形状(2)

2019-08-03 11:08

后再继续。 DrawIndexedPrimitive

IDirect3DDevice7::DrawIndexedPrimitive方法在绘制指定的几何基本形状时,会依据对顶点数组所作的索引而非直接使用某个顶点数组。以下是本方法的函式宣告:

HRESULT IDirect3DDevice7::DrawIndexedPrimitive( ); 参数 说明 这个指令要绘制的基本形状型态。这个参数必须是 D3DPRIMITIVETYPEd3dptPrimitiveType 列举型态成员之一。D3DPRIMITIVETYPE 的D3DPT_POINTLIST成员则没有索引。 dwVertexTypeDesc lpvVertices dwVertexCount lpwIndices 储存了弹性顶点格式旗标的组合,用来定义这些基本形状集合会 用到的顶点格式。 指到您在基本形状序列中要用到的顶点数组。 储存了lpvVertices参数指到数组中的顶点总数。 指到某个WORD串行,在创造要绘制的几何形状时,这个串行可用作对顶点串行作索引。 定义用来创造几何形状的索引数目。可容许的最大索引数是D3DMAXNUMVERTICES(0xFFFF)。 将本参数设为0可在绘制基本形状时不用等待,如果设为 D3DDP_WAIT,则使得方法会在回传前保持等待,直到多边形 完成绘dwFlags 制。预设情形下,这个方法会在将多边形传送到视讯卡后 立刻回传。 可利用D3DDP_WAIT旗标值来除错。程序不应在绘制前使用 D3DDP_WAIT旗标来等待场景更新。 D3DPRIMITIVETYPE d3dptPrimitiveType , DWORD dwVertexTypeDesc, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD lpwIndices, DWORD dwIndexCount, DWORD dwFlags dwIndexCount DrawIndexedPrimitiveStrided

IDirect3DDevice7::DrawIndexedPrimitiveStrided方法允许您依据对间插顶点数组所作的索引来绘制一个几何基本形状。以下是本方法的函式宣告:

HRESULT DrawIndexedPrimitiveStrided( ); 参数 说明 这个指令要绘制的基本形状型态。这个参数必须是 D3DPRIMITIVETYPEd3dptPrimitiveType 列举型态成员之一。D3DPRIMITIVETYPE 的D3DPT_POINTLIST成员则没有索引。 dwVertexTypeDesc 描述基本形状的顶点格式的弹性顶点格式旗标组合。 D3DDRAWPRIMITIVESTRIDEDDATA结构的地址,这个结构中 包含了基lpVertexArray 本形状的顶点组件的指针和内存间插,这个参数的格 式是由dwVertexTypeDesc中的旗标所设定。 定义串行中的顶点数目。这个参数的用法和Idirect3DDevice7:: DrawPrimitive方法中的dwVertexCount参数不同。在那个方 法中,dwVertexCount dwVertexCount参数是指要画的顶点数,但这里则是代 表了lpVertexArray参数指到的数组中的顶点总数。当您呼叫 IDirect-3DDevice7::DrawIndexedPrimitiveStrided时,您会在 dwIndexCount参数中指定要画的顶点数目。 lpwIndices 指到某个WORD串行,在创造要绘制的几何形状时,这个串行可用作对指定的顶点串行作索引。 定义用来创造几何形状的索引数目。可容许的最大索引数是D3DMAXNUMVERTICES(0xFFFF)。 设为0可在绘制基本形状时不用等待,如果使用D3DDP_WAIT 旗标,则使得方法会在回传前保持等待,直到多边形完成绘制, 而不会在多边形D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD dwVertexTypeDesc, LPD3DDRAWPRIMITIVESTRIDEDDATA lpVertexArray, DWORD dwVertexCount, LPWORD lpwIndices, DWORD dwIndexCount, DWORD dwFlags dwIndexCount dwFlags 传送到视讯卡后立刻回传。(对场景撷取卡而 言,当卡响应时方法会立刻回传。) 本旗标值通常是来除错。程序不应用D3DDP_WAIT旗标来等待 场景更新后再继续。 DrawIndexedPrimitiveVB

IDirect3DDevice7::DrawIndexedPrimitiveVB方法是依据对顶点缓冲区中顶点数组的索引来绘制一个几何基本形状。以下是本方法的函式宣告:

HRESULT DrawIndexedPrimitiveVB( ); 参数 说明 这个指令要绘制的基本形状型态。这个参数必须是D3DPRIMITIVETYPEd3dptPrimitiveType 列举型态成员之一。D3DPRIMITIVETYPE 的D3DPT_POINTLIST成员则没有索引。 lpd3dVertexBuffer 包含顶点数组的顶点缓冲区的IDirect3DVertexBuffer7接口的地址。 dwStartVertex dwNumVertices lpwIndices 顶点缓冲区中第一个要绘制的顶点索引。 顶点缓冲区中要绘制的顶点总数。 某个WORD数组的地址。这个数组是用来对顶点缓冲区中的顶 点作索引。数组中的值必须让顶点的索引结果落在范围 dwNumVertices 0, -1 中。 数组lpwIndices中的索引数目。可容许的最大索引数目是 D3DMAXNUMVERTICES(0xFFFF)。 设为0可在绘制基本形状时不用等待,如果使用D3DDP_WAIT 旗标,则dwFlags 使得方法会在回传前保持等待,直到多边形完成绘制,而不会在多边形传送到视讯卡后立刻回传。(对场景撷取卡而 言,当卡响应时方法会立刻D3DPRIMITIVETYPE d3dptPrimitiveType, LPDIRECT3DVERTEXBUFFER7 lpd3dVertexBuffer, DWORD dwStartVertex, DWORD dwNumVertices, LPWORD lpwIndices, DWORD dwIndexCount, DWORD dwFlags dwIndexCount 回传。) 本旗标值通常是来除错。程序不应用D3DDP_WAIT旗标来等待 场景更新后再继续。 基本形状的型态

DrawPrimitive方法使用了D3DPRIMITIVETYPE列举型态来列出这个方法支持的所有基本形状。以下是型态的定义:

typedef enum _D3DPRIMITIVETYPE {

D3DPT_POINTLIST D3DPT_LINELIST D3DPT_LINESTRIP D3DPT_TRIANGLELIST D3DPT_TRIANGLEFAN D3DPT_FORCE_DWORD

=2,

=3, =4, =6

=0x7fffffff, =1,

D3DPT_TRIANGLESTRIP =5,

}D3DPRIMITIVETYPE;

这里是D3DPRIMITIVETYPE列举型态的成员:

? D3DPT_POINTLIST 让DrawPrimitive方法绘制顶点成为一些独立点的集合。

? D3DPT_LINELIST 让DrawPrimitive方法绘制顶点成为独立直线段(isolated

straight-line segment)的串行。您必须设定大于或等于2的偶数个顶点。

? D3DPT_LINESTRIP 让DrawPrimitive方法绘制顶点成为单一的polyline。您必须设

定至少二个顶点。

? D3DPT_TRIANGLELIST 让DrawPrimitive方法绘制顶点成为连续的独立三角形。每

三个顶点定义一个单一的三角形。您必须设定至少三个顶点并确定顶点数目是3的倍数。winding-order绘制状态定义了背面排除(backface culling,或称backface removal)的运作方式。(我们会在本章后面讨论背面排除和winding-order绘制状态)

? D3DPT_TRIANGLESTRIP 让DrawPrimitive方法绘制顶点成为一个三角形的条。您

必须提供至少三个顶点。DrawPrimitive方法会不依照顺序拿出偶数个三角形的顶点,以确保画三角形是依照顺时针方向开始。(要知道更多信息,请看本章后面的 <排除状态> )

? D3DPT_TRIANGLEFAN 让DrawPrimitive方法绘制顶点成为一个三角形扇。您必须

定义至少三个顶点。

? D3DPT_FORCE_DWORD 强制列举型态为32位型态。

下一段谈到了这些基本形状的型态,您可以用来建立您的程序中的3D内容。

点串行

您可以用第一个基本形状型态-点串行(point list),来定义一群绘成独立点的顶点。您可以在3D场景中用点串行来表示如虚线的对象。

要建立一个点串行,您需要填入一个顶点数组。以下的程序范例说明了如何去执行这个作业。虽然我是用一个简单的6元素串行,如果您想的话,您也可以用点串行来建立一个星场;当然串行中要有很多很多的点。我比较习惯用环绕着3D世界贴图方式的球体来创造星场,因为这样可以用贴图动画来创造出多种效果。

const DWORD TOTAL_VERTICES =6; D3DVERTEX lpVertices TOTAL_VERTICES; . . .

D3DVECTOR v1(-1,4,0); D3DVECTOR v2(2,-1,0); D3DVECTOR v3(1,3,0); D3DVECTOR v4(-3,-2,0); D3DVECTOR v5(3,2,0); D3DVECTOR v6(2,1,0); D3DVECTOR vNormal(0,0,-1);

lpVertices [0] ==D3DVERTEX(v1,vNormal,0,0); lpVertices [1] ==D3DVERTEX(v2,vNormal,0,0);


6.绘制 3D基本形状(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《经济法学》练习题库及答案详解

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: