2013-05-09 62 views
1

我用点精灵在direct3d9中制作具有动态顶点缓冲区的粒子进行批处理。但我只能以30fps创建2500个粒子。我在互联网上看到他们可以创造出数以百万计的微粒。我如何在Direct3D中制作数百万个粒子?优化的粒子系统Direct3D 9

+0

这100万个粒子演示通常在CPU上完全计算,而无需从CPU端传输任何数据。如果你想计算CPU上的粒子,因此必须将数据发送到GPU,10K粒子是一个正常值。 – Gnietschow 2013-05-10 18:39:16

+0

我如何在GPU中做到这一点? – 2013-05-11 02:13:57

+0

这太复杂了,不能在这里解释它,但是在互联网上有很多来源,它们在那里被描述,例如, http://www.2ld.de/gdc2004/MegaParticlesPaper.pdf(没有阅读它,只挑选了一些随机链接的主题) – Gnietschow 2013-05-11 10:01:05

回答

0

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

+0

我用配料技术绘图。在一次平局中获得512分。你能举个例子吗? – 2013-05-11 02:14:48

+0

@DilhanGeeth:我真的没有例子,如何把你的代码放在一起... – Goz 2013-05-11 06:24:25

+0

http://pastebin.com/t7eVxG9j – 2013-05-12 03:52:44