【问题标题】:Optimized Particle System Direct3D 9优化的粒子系统 Direct3D 9
【发布时间】:2013-05-09 00:43:26
【问题描述】:

我使用点精灵在 direct3d9 中制作粒子,并使用动态顶点缓冲区进行批处理。但我只能以 30fps 的速度创建 2500 个粒子。我在互联网上看到他们可以创造数百万个粒子。我如何在 Direct3D 中制作数百万个粒子?

【问题讨论】:

  • 这百万个粒子演示通常完全在 gpu 上计算,无需从 cpu 端传输任何数据。如果要在 cpu 上计算粒子,因此必须将数据发送到 gpu,10k 粒子是正常值。
  • 我如何在 GPU 中做到这一点?
  • 这太复杂了,无法在这里解释,但互联网上有很多来源,其中描述了它,例如2ld.de/gdc2004/MegaParticlesPaper.pdf(没看过,只是随便挑了个题目链接)

标签: directx direct3d9


【解决方案1】:

2500 个粒子非常低。您是否使用自己的 Draw(Indexed)Primitive 调用来绘制它们?如果是这样,这是错误的做事方式。使用 DirectX,您希望将绘图调用降至最低。您应该使用所有坐标位置填充动态顶点缓冲区,然后使用单个 Draw(Indexed)Primitive 调用将它们全部渲染。

【讨论】:

  • 我正在使用批处理技术进行绘图。 512 点在一次平局调用中。可以举个例子吗?
  • @DilhanGeeth:我真的没有任何例子,不如把你的一些代码放上来......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
相关资源
最近更新 更多