|
|
正在做一个粒子系统,每一桢更新所有粒子的四个顶点,然后一起加入一个vertex buffer,然后用一次DrawPrimitive(D3DPT_TRIANGLELIST, 0, num)全部画出来,结果发现竟然只能显示1000多个粒子,也就是2000多个三角形,再多桢数就不能忍受了。我想应该不是别的地方效率不够,我只要把DrawPrimitive注释掉就可以跑的飞快。
我的配置应该很不错了,p4 2.4G,1g内存,geforce6600GT的显卡。查了几天,不知道哪里有问题,真是郁闷。还望高手指点!另外祝大家新年快乐!
相关代码如下:
vertex buffer的创建:
pDev->CreateVertexBuffer(
50000 * sizeof(ColorVertex), //50000是随编写的最大值
D3DUSAGE_WRITEONLY | D3DUSAGE_DYNAMIC,
FVF,
D3DPOOL_DEFAULT,
&particalQuad,
0);
lock:
particalQuad->Lock(0, offset * sizeof(ColorVertex), (void**)&bww, D3DLOCK_DISCARD);
memcpy( bww, bw, offset * sizeof(ColorVertex) );
//bw是存放在内存里面的数据
particalQuad->Unlock();
lpDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, num);
[em20] [em20] [em20] |
|