首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

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

2012-03-22 
请教一个粒子系统的效率问题我写了一个粒子系统,用的directXsdk9.0.如果屏幕上什么都不绘制,刷新率是2000

请教一个粒子系统的效率问题
我写了一个粒子系统,用的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上运算; 设计粒子时避免出现摄像机前大片粒子的情况。

热点排行