Direct3D(一)

创建顶点/缓存缩索引

HRESULT IDirect3DDevice9::CreateVertexBuffer(

UINT Length,

DWORD Usage,

DWORD FVF,

D3DPOOL Pool

IDirect3DVertexBuffer9** ppVertexBuffer,

HANDLE* pSharedHandle

);

 

HRESULT IDirect3DDevice9::CreateIndexBuffer(

UINT Length,

 

DWORD Usage,

D3DFORMAT Format,

D3DPOOL Pool,

IDirect3DIndexBuffer9** ppIndexBuffer,

HANDLE* pSharedHandle

);

 

 

Length —— 分配给缓存的字节大小。假如想得到一个能存储8个顶点的顶点缓存,那么我们就要在顶点结构中设置这个参数为 8 * sizeof ( Vertex ) 。

Usage —— 指定关于怎样使用缓存的额外信息。这个值可以是0,没有标记,或者是下面标记的一个或多个的组合:

     nD3DUSAGE_DYNAMIC——设置这个参数可以使缓存是动态的。在下一页说明静态和动态缓存。

     nD3DUSAGE_POINTS——这个参数指定缓存存储原始点。原始点将在第14章粒子系统中介绍。这个参数仅仅用在顶点缓冲中。

     nD3DUSAGE_SOFTWAREPROCESSING——使用软件顶点处理

     nD3DUSAGE_WRITEONLY——指定应用程序只能写缓存。它允许驱动程序分配最适合的内存地址作为写缓存。注意如果从创建好的这种缓存中读数据,将会返回错误信息。

FVF —— 存储在缓存中的顶点格式

Pool —— 缓存放置在哪一个内存池中

ppVertexBuffer ——返回创建好的顶点缓存的指针。

pSharedHandle ——没有使用;设置为0。

Format ——指定索引的大小;使用D3DFMT_INDEX16设置16位索引,使用D3DFMT_INDEX32设置32位索引。注意并非所有设备都支持32位索引;请检查设备能力。

ppIndexBuffer ——返回创建好的索引缓存的指针。


 

基本图元:

DrawPrimitive();//绘制顶点缓存的内容

HRESULT IDirect3DDevice9::DrawPrimitive(

D3DPRIMITIVETYPE PrimitiveType,

UINT StartVertex,

UINT PrimitiveCount

);

 

PrimitiveType——我们绘制的图元类型。比如,我们能绘制点和线以及三角形。以后我们使用三角形,用D3DPT_TRIANGLELIST参数。

D3DPT_POINTLIST 图元是一些点

D3DPT_LINELIST /_LINESTRIP 图元是一些离散的线段/连接的线段 

D3DPT_TRIANGLELIST/_TRIANGLESTRIP/_TRANGLEFAN s三角形列,带,扇

StartVertex——索引到在顶点流中的一个元素。设置渲染顶点中的开始点。这个参数给予我们一定的机动性,可以绘制一个顶点缓存中的某部分。

PrimitiveCount——绘制图元的个数。

 

// 绘制4个三角形

_device->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 4);

DrawIndexPrimitive();//绘制缓存索引的内容

HRESULT IDirect3DDevice9::DrawIndexedPrimitive(

D3DPRIMITIVETYPE Type,

INT BaseVertexIndex,

UINT MinIndex,

UINT NumVertices,

UINT StartIndex,

UINT PrimitiveCount

);

Type——我们绘制的图元类型。比如,我们能绘制点和线以及三角形。以后我们使用三角形,用D3DPT_TRIANGLELIST参数。

MinIndex——将被引用的最小索引值。

NumVertices——在此调用中将被引用的顶点数。

l PrimitiveCount——绘制图元的个数。

StartIndex——索引到索引缓存中的某个位置,它标记开始渲染的开始索引点。

BaseVertexIndex——一个基本数字,在调用中用它去加上索引。参看下面的说明。

渲染状态:

HRESULT IDirect3DDevice9::SetRenderState(

D3DRENDERSTATETYPE State, // 更改的渲染状态

DWORD Value // 新的状态值

);

_device->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);//线框模式渲染

发布了107 篇原创文章 · 获赞 31 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/love_phoebe/article/details/101642384
今日推荐