创建顶点/缓存缩索引
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
);
l Length —— 分配给缓存的字节大小。假如想得到一个能存储8个顶点的顶点缓存,那么我们就要在顶点结构中设置这个参数为 8 * sizeof ( Vertex ) 。
l Usage —— 指定关于怎样使用缓存的额外信息。这个值可以是0,没有标记,或者是下面标记的一个或多个的组合:
nD3DUSAGE_DYNAMIC——设置这个参数可以使缓存是动态的。在下一页说明静态和动态缓存。
nD3DUSAGE_POINTS——这个参数指定缓存存储原始点。原始点将在第14章粒子系统中介绍。这个参数仅仅用在顶点缓冲中。
nD3DUSAGE_SOFTWAREPROCESSING——使用软件顶点处理
nD3DUSAGE_WRITEONLY——指定应用程序只能写缓存。它允许驱动程序分配最适合的内存地址作为写缓存。注意如果从创建好的这种缓存中读数据,将会返回错误信息。
l FVF —— 存储在缓存中的顶点格式
l Pool —— 缓存放置在哪一个内存池中
l ppVertexBuffer ——返回创建好的顶点缓存的指针。
l pSharedHandle ——没有使用;设置为0。
l Format ——指定索引的大小;使用D3DFMT_INDEX16设置16位索引,使用D3DFMT_INDEX32设置32位索引。注意并非所有设备都支持32位索引;请检查设备能力。
l ppIndexBuffer ——返回创建好的索引缓存的指针。
基本图元:
DrawPrimitive();//绘制顶点缓存的内容
HRESULT IDirect3DDevice9::DrawPrimitive(
D3DPRIMITIVETYPE PrimitiveType,
UINT StartVertex,
UINT PrimitiveCount
);
l PrimitiveType——我们绘制的图元类型。比如,我们能绘制点和线以及三角形。以后我们使用三角形,用D3DPT_TRIANGLELIST参数。
D3DPT_POINTLIST 图元是一些点
D3DPT_LINELIST /_LINESTRIP 图元是一些离散的线段/连接的线段
D3DPT_TRIANGLELIST/_TRIANGLESTRIP/_TRANGLEFAN s三角形列,带,扇
l StartVertex——索引到在顶点流中的一个元素。设置渲染顶点中的开始点。这个参数给予我们一定的机动性,可以绘制一个顶点缓存中的某部分。
l PrimitiveCount——绘制图元的个数。
// 绘制4个三角形
_device->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 4);
DrawIndexPrimitive();//绘制缓存索引的内容
HRESULT IDirect3DDevice9::DrawIndexedPrimitive(
D3DPRIMITIVETYPE Type,
INT BaseVertexIndex,
UINT MinIndex,
UINT NumVertices,
UINT StartIndex,
UINT PrimitiveCount
);
l Type——我们绘制的图元类型。比如,我们能绘制点和线以及三角形。以后我们使用三角形,用D3DPT_TRIANGLELIST参数。
l MinIndex——将被引用的最小索引值。
l NumVertices——在此调用中将被引用的顶点数。
l PrimitiveCount——绘制图元的个数。
l StartIndex——索引到索引缓存中的某个位置,它标记开始渲染的开始索引点。
l BaseVertexIndex——一个基本数字,在调用中用它去加上索引。参看下面的说明。
渲染状态:
HRESULT IDirect3DDevice9::SetRenderState(
D3DRENDERSTATETYPE State, // 更改的渲染状态
DWORD Value // 新的状态值
);
_device->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);//线框模式渲染
Direct3D(一)
猜你喜欢
转载自blog.csdn.net/love_phoebe/article/details/101642384
今日推荐
周排行