读书人

请问一个粒子系统的效率有关问题

发布时间: 2012-03-22 17:43:57 作者: rapoo

请教一个粒子系统的效率问题
我写了一个粒子系统,用的directX sdk 9.0.如果屏幕上什么都不绘制,刷新率是2000左右,我运行一个粒子效果,刷新率马上降低到40左右了.
这个粒子效果属性是这样的:
随机在指定大小区域内生成顶点3个到5个之间的实体,生存时间是5秒到15秒之间的随机值,初速度和加速度都是在指定某区域内随机变化.每个顶点的颜色也都在RGB(0~255)之间随机变化.
最大粒子数为3000个,每秒发射100个,1秒发射一次.没有加纹理
这样的一个粒子效果这种速度算不算正常?是不是效率太低了?

[解决办法]
可能有几种原因:
1, 填充率。 在楼主DEMO里面每个粒子是否包含很多象素? 比如CS里的烟雾弹,粒子数目很少, 但摄像机离近了帧率也会下降。
2, CPU-GPU之间的带宽。 看楼主的描述, 粒子系统的物理运算是在CPU上完成的, 那么需要不断Lock、 Unlock VertexBuffer。

解决方法:
减少Lock、Unlock次数;精减VertexBuffer大小;使用多流; 将部分物理运算放到GPU上运算; 设计粒子时避免出现摄像机前大片粒子的情况。

读书人网 >网络游戏

热点推荐