在DirectX程序中我们可以自定义多个不同数据格式的顶点缓冲区,本例我们定义了三个顶点缓冲区(在DX9中应该最大可以支持16个)存放顶点位置,颜色和纹理的坐标。通过鼠标拖曳旋转物体,按键1和2控制纹理的采样方式最近点采样(最近点采样和线性纹理过滤)

我们先看以下代码:

这里需要说明的是首先定义了图片数据以及顶点的位置数据,颜色数据和纹理坐标数据。 再按以前的步骤创建DX应用程序,在创建设备后通过调用 D3DXCreateTextureFromFileInMemory 方法从内存图片数据创建纹理,通过调用 IDirect3DDevice9::CreateVertexBuffer 方法创建多个我们需要格式的顶点缓冲区,通过调用 IDirect3DDevice9::CreateVertexDeclaration 方法创建顶点着色声明。在渲染时调用 IDirect3DDevice9::SetTexture 设定纹理状态,调用 IDirect3DDevice9::SetVertexDeclaration 设定顶点数据流声明,再通过多次调用 IDirect3DDevice9::SetStreamSource 方法将不同的顶点缓冲区绑定到多个设备数据流上,最后通过调用 IDirect3DDevice9::DrawPrimitive 方法按照当前指定的顶点格式渲染无索引的顶点序列,最后显示出来。

下图为本例代码执行效果:

[返回目录][我有话说]