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(...);}