狂想的天空

狂想,只要你想!

C++博客 首页 新随笔 联系 聚合 管理
  21 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks

下面,我们通过构造和描绘一个 Vertex Buffer,来介绍FVF的应用;

要构建一个vertex buffer,需要按下列步骤进行。

1>声明指针变量
2>定义顶点资料结构与常数
3>产生vertex buffer
4>设定vertex buffer的资料

 1 LPDIRECT3DVERTEXBUFFER9    m_pMyVB;//定义指针
 2 
 3 //****定义顶点资料****
 4 struct MY_VERTEX
 5 {
 6    D3DXVECTOR3    p    ;//座标值
 7    DWORD          color;//defuse色
 8 };
 9 
10 //****定义常量****
11 #define MY_VERTEX_FVF (D3DFVF_XYZ | D3DFVF_DIFFUSE)
12 
13 //****产生Vertex Buffer****
14 if(FAILED(pD3Device->CreateVertexBuffer(
15    4 * sizeof(MY_VERTEX),//VertexBuffer的大小
16    D3DUSAGE_WRITEONLY   ,//VB的使用方式
17    MY_VERTEX_FVF        ,//VB的FVF格式
18    D3DPOOL_MANAGED      ,//系统的VB操作方式
19    &m_pMyVB             ,//存放VB的变量
20    NULL) ) )       //永远指定为NULL
21 {
22     return E_FALL;
23 }
24 
25 //****设定资料****
26 
27 MY_VERTEX* pVertex;
28 //以0填充vertex buffer的内容
29 m_pMyVB->Lock(0,0,(void**)&pVertex,0);
30 //顶点资料:顶点坐标的设定(假定几个坐标点)
31 pVertex[0].p = D3DVECTOR3(-1.5f1.5f ,  0.0f);
32 pVertex[1].p = D3DVECTOR3(1.5f ,  1.5f ,  0.0f);
33 pVertex[2].p = D3DVECTOR3(-1.5f-1.5f0.0f);
34 pVertex[3].p = D3DVECTOR3(1.5f ,  -1.5f0.0f);
35 
36 //顶点资料:顶点的基本颜色的(全为白色)
37 pVertex[0].color=pVertex[1].color=pVertex[2].color=pVertex[3].color=D3DXCOLOR(1.0f,1.0f,1.0f,1.0f); 
38 
39 //解锁
40 m_pMyVB->UnLock();
41 
42 //将Vertex buffer设定到Rendering pipeline
43 pD3DDevice->SetStreamSource(0,m_pMyVB,0,sizeof(MY_VERTEX));
44 
45 //设定顶点资料的FVF格式
46 pD3DDevice->SetFVF(MY_VERTEX);
47 
48 //把图形绘制出来
49 pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
50 
51 

以上代码,会在屏幕上绘制出一个白色的矩形。



posted on 2008-12-16 20:33 狂之想 阅读(442) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


//