|
|
初学D3D,感觉有点新鲜!但也产生很多的疑问。
我看到很多入门书给出的例子都是:
首先创建一个VertexBuffer或者IndexVertexBuffer
然后Lock住Buffer把自己的顶点copy进去
再然后就是SetStreamSource,,,,,,SetFVF.....再然后DrawPrimitive或DrawIndexedPrimitive渲染出来。
但我在文档上看到一个DrawPrimitiveUP方法。不用创建VertexBuffer。
我是个初学者,我不理解、为什么要用VertexBuffer,有什么好处。直接用DrawPrimitiveUP渲染不就得了嘛。怎么还这么麻烦要创建VertexBuffer再把自己的顶点数据COPY进去。。再用DrawPrimitive渲染。觉得好麻烦。请高人说说VertexBuffer的作用?
看两个例子:一个使用VertexBuffer,一个不使用VertexBuffer。
g_pDevice->CreateVertexBuffer(sizeof(CUSTOMVERTEX) * 3, 0,FVF,D3DPOOL_MANAGED,&g_pVB,0);
CUSTOMVERTEX* pData;
if(D3D_OK == g_pVB->Lock(sizeof(CUSTOMVERTEX)*3,sizeof(CUSTOMVERTEX)*3,(void**)&pData,0))
{
memcpy(pData,tri1,sizeof(CUSTOMVERTEX)*3);
g_pVB->Unlock();
}
|
|