D3D9 Samples(2)--Vertices

 

 

 

D3D9 Samples(2)--Vertices

 

 

 

          打开Tutorial 2: Vertices项目,先编译运行下项目,看看效果:

 

 

        这个例子演示了基本的vertex buffer的使用。顶点缓冲用于保存场景中模型的顶点数据,除了位置信息,还可以包括颜色值,纹理坐标等。

 

 

 

1. 数据结构

 

struct CUSTOMVERTEX
{
    FLOAT x, y, z,rhw;	// The transformed position for the vertex
    DWORD color;		// The vertex color
};

#define CUSTOMVERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)


这是每个点的数据架构,包括x、y、z、rhw四个点就构成了一个D3DFVF_XYZRHW,表明已转换过的顶点。之所以需要rhw是由于经过顶点变换的点也是四个元素。此外还有一个color用于记录每个顶点的颜色

D3DFVF_CUSTOMVERTEX 定义了一个FVF,告知vertex buffer每个顶点的数据布局。建议使用vertex declaration,比FVF更灵活,一般shader都是使用declaration。 

 

 

 

2. 初始化

 

2.1 初始化一个三角型的顶点数据

InitVB

CUSTOMVERTEX Vertices

 

2.2 创建顶点缓冲区

IDirect3DDevice9::CreateVertexBuffer

 

这里要说一个D3D9的内存池种类。有四种内存池:

 

D3DPOOL_DEFAULT

资源通常是保存在显存或AGP内存中,性能最高;但在D3D9设备丢失(lost)时要释放资源,并在设备重置(reset)时重新创建资源。

 

D3DPOOL_MANAGED

托管资源,资源也是存放在显存中的。但是D3D9会自动在系统内存中进行备份,所以在D3D9设备丢失时,D3D9会自动释放这些资源,并在设备重置时自动重建。所以用户无需释放和重建资源。

 

D3DPOOL_SYSTEMMEM

将资源存放在系统内存中,性能不高,但可以被D3D9读取并渲染。在D3D9设备丢失和重建时,无需对资源进行释放和重建。

 

D3DPOOL_SCRATCH

将资源存放在系统内存中,但是D3D9不能用这个资源进行渲染。在D3D9设备丢失和重建时,无需对资源进行释放和重建。

 

 

 

3. 渲染

 

3.1 设置源数据流,即上面创建的vertex buffer

IDirect3DDevice9:: SetStreamSource

 

 

3.2 设置顶点布局,这里用的FVF

IDirect3DDevice9:: SetFVF 

 

如果前面使用的是vertex declaration。

IDirect3DDevice9:: SetVertexDeclaration

 

 

3.3 绘制几何体

IDirect3DDevice9:: DrawPrimitive

D3D中的几何模型都是由点、线、三角形组成。基本几何体分为 Point list、Line list、Line strip、Triangle list、Triangle strip、Triangle fan 几种。具体相见MSDN。

 

 

 

 

参考资料

 

http://msdn.microsoft.com/en-us/library/windows/desktop/bb206332(v=vs.85).aspx

 

http://msdn.microsoft.com/en-us/library/windows/desktop/bb147291(v=vs.85).aspx

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值