Director3D中的绘制——顶点缓存和索引缓存

本文详细介绍了Director3D中顶点缓存和索引缓存的创建、访问、信息获取及绘制过程。通过使用顶点缓存和索引缓存,可以提高数据处理速度,实现高效绘制。讲解了如何创建和访问缓存,以及不同绘制状态的设置和使用,包括静态与动态缓存的区别,以及DrawPrimitive和DrawIndexedPrimitive等绘制方法的使用。
摘要由CSDN通过智能技术生成

一个顶点缓存是储存有顶点数据的连续空间,一个索引缓存是储存有索引数据的连续空间,使用顶点缓存和索引缓存来表示相关的数据,而不使用数组来表示的原因是因为:顶点缓存和索引缓存储存在显存中,在处理的时候能够获得比系统内存更快的处理速度。

在代码中,顶点缓存使用的接口IDirectorVertexBuffer9表示,索引缓存使用的是IDirectorIndexBuffer9表示。

创建顶点缓存和索引缓存

创建顶点缓:

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* pShareHandle
);

有一些参数是相同的,放在一起解释:

Length:为缓存分配的字节数,如果你想让缓存能够储存5个顶点,那么就需要给Length赋值:5 * sizeof(Vertex),其中Vertex是我们定义的顶点的结构体

Usage:指定使用顶点的一些附加属性,可以是0,也可以是下面的属性中的一个或者多个的结合

              D3DUSAGE_DYNAMIC:将缓存设置为动态缓存,默认的是静态缓存

              D3DUSAGE_POINTS:该标记规定缓存用来储存点图元,仅仅适用于顶点缓存

              D3DUSAGE_SOFTWAREPROCESSING:指定顶点软件运算方式

              D3DUSAGE_WRITEONLY:规定应用程序对软件的操作模式是“只写”的,这样驱动程序就可以将缓存放在最适合写操作的内存地址中去,注意:对使用该操作的缓存进行“读”操作的时候会出错

Pool:内存池的类型

pShareHandle:微软文档中给的意思,貌似这个参数是用于Windows Vista,用来共享资源的,我们不适用时设置成NULL,就很稳健

CreateVertexBuffer9中的参数解释:

FVF:顶点的灵活顶点格式

ppVertexBuffer:执行接收顶点缓存地址的指针(也就是传说中的二级指针)

CreateIndexBuffer9中的参数解释:

Format:指定索引的大小,有两哥固定的选择:D3DFMT_INDEX16和D3DFMT_INDEX32,分别表示16位索引和32位索引,但

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值