|
|
一个简单的问题:
现在我想用循环来渲染 n 个对象,假设每个对象都是一个三角形
三角形的数据保存在一个数组中
我现在创建一个 LPDIRECT3DVERTEXBUFFER9,含有 3 个顶点
在循环中使用下面的方法来进行绘制,使用独立的 Render 函数,下面是函数的内容。。
if( FAILED( pVB->Lock( 0, sizeof(3 * sizeof(CUSTOMVERTEX)), (VOID**)&pVertices, 0 ) ) )
return E_FAIL;
memcpy( pVertices, testVer, sizeof(testVer) );
pVB->Unlock();
m_pd3dDevice->SetStreamSource( 0, pVB, 0, sizeof(CUSTOMVERTEX) );
m_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP , 0, 1 );
问题是:这时候只能有一个三角形被绘制,其他 n-1 个三角形虽然在循环过程中被执行到了,但是最后却不会被绘制出来
我想请问用什么方法才能使用一个 LPDIRECT3DVERTEXBUFFER9 来实现多个同样顶点数量的图形的绘制呢?
不要告诉我把所有的对象一次都装入一个大的 LPDIRECT3DVERTEXBUFFER9 中,上面的三角形仅仅是例子,实际对象复杂,只能逐个执行绘制
呵呵,很奇怪,我在以前使用 DX 过程中也使用过类似的方法,用一个 LPDIRECT3DVERTEXBUFFER9 来绘制多个对象,没有问题,可是我怎么也
找不出现在为什么会失败。。。高手指点一下,谢! |
|