摸爬滚打DirectX11_day04——顶点缓存介绍

在计算机所描绘的3D世界中,所有的物体模型都是通过多边形网格(三角形,四边形)来逼近表示的,之后在这些网格轮廓的表面贴上相应的图片。

任何物体都可以用三角形网格来逼近表示。(这里的多边形不仅仅有顶点的坐标位置,还含有颜色等其他属性)


顶点缓存

如果想在Direct3D中创建物体,那么首先就要创建可以构成物体的所有顶点结构。

而这些顶点的数据保存在顶点缓存中(某一块内存空间或显卡的显存中)。


使用顶点缓存

设计顶点缓存

在DX9中的固定功能流水线中,有一套灵活顶点格式(FVF)(其实本质上就是定义一个结构体)。在灵活顶点格式中,我们可以随心所欲的自定义其中包含的顶点属性信息,包括颜色,顶点法线,纹理坐标等等。

struct NormalTexVertex
{
    float x,y,z;//坐标
    float nx.ny.nz;//法线向量
    float u,v;//纹理坐标
};//但是定义了结构体,D3D并不知道我们要干嘛,此时需要定义宏来传达我们定义的顶点有哪些属性

#define D3DFVF_NormalTexVertex (D3DFVF_XYZ|D3DFVFNORMAL|D3DFVF_TEX1~8)

这里写图片描述

这里写图片描述


创建顶点缓存

顶点缓存由IDirect3DVertexBuffer9接口对象来表示。

LPDIRECT3DVERTEXBUFFER9 g_pVerTEXbuffer=NULL;
//定义一个指向接口的指针

然后就调用CreateVertexBuffer方法创建顶点缓存,将其内存地址复制到指针中。

这里写图片描述

这里写图片描述

所以创建顶点缓存
这里写图片描述


访问顶点缓存
使用之前定义的指针来访问。会使用到Lock和Unlock方法,在两者之间进行访问顶点内存。

对顶点缓存的内存操作必须要通过Lock和Unlock来进行,先用Lock函数加锁,再用Unlock函数解锁。


使用顶点缓存进行图形的绘制

此时用到3个函数。
IDirect3DDevice9::SetStreamSource,使得顶点缓存和渲染流水线相关联。
IDirect3DDevice9::SetFVF,用于指定灵活顶点格式的宏名称。
IDirect3DDevice9::DrawPrimitive,完成图形绘制操作。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值