读书人

DX instancing绘制解决思路

发布时间: 2012-02-28 13:06:36 作者: rapoo

DX instancing绘制
当有一个物体,需要绘制该物体的100个instancing时,设置如下:

C/C++ code
    pd3dDevice->SetStreamSource(0, vb, 0, sizeof(Vertex));    pd3dDevice->SetStreamSourceFreq(0, D3DSTREAMSOURCE_INDEXEDDATA | (UINT)100));//设置实例数            pd3dDevice->SetStreamSource(1, g_pVBInstanceData, 0, sizeof(Instance));    pd3dDevice->SetStreamSourceFreq(1, D3DSTREAMSOURCE_INSTANCEDATA | 1UL);//设置实例绘制频率?    pd3dDevice->SetIndices(ib));//设置索引


请问其有3个物体,每个物体的实例数都为100时,StreamNumber应该分别怎么设置?

[解决办法]
三个物体,每个物体都是两个StreamNumber 0和1,如果顶点格式一样,一次设置,三次绘制。

C/C++ code
pd3dDevice->SetStreamSourceFreq(0, D3DSTREAMSOURCE_INDEXEDDATA | (UINT)100));//设置实例数       pd3dDevice->SetStreamSourceFreq(1, D3DSTREAMSOURCE_INSTANCEDATA | 1UL);//设置实例绘制频率?for( int i = 0; i < 3; i++ ){    pd3dDevice->SetStreamSource(0,...);    pd3dDevice->SetIndices(...);    pd3dDevice->DrawIndexedPrimitive(...);} 

读书人网 >网络游戏

热点推荐