2013-05-09 4 views
1

Я использовал точечные спрайты для создания частиц в direct3d9 с динамическим буфером вершин для дозирования. Но я могу создавать только 2500 частиц со скоростью 30 кадров в секунду. Я видел в Интернете, что они могут создавать миллионы частиц. Как сделать миллионы частиц в Direct3D?Оптимизированная система частиц Direct3D 9

+0

Этот миллион частиц-демки обычно вычисляется полностью на gpu без какой-либо передачи данных со стороны процессора. Если вы хотите вычислить частицы на процессоре и, следовательно, должны отправить данные в gpu, частицы 10k являются нормальным значением. – Gnietschow

+0

Как сделать это в GPU? –

+0

Это слишком сложно, чтобы объяснить это здесь, но есть много источников в Интернете, где это описано, например. http://www.2ld.de/gdc2004/MegaParticlesPaper.pdf (не читал, только выбрал случайную ссылку для темы) – Gnietschow

ответ

0

2500 частиц ОЧЕНЬ низко. Вы рисуете их каждый со своим собственным призывом Draw (Indexed) Primitive? Если так, это неправильный способ сделать что-то. С DirectX вы хотите, чтобы ваши призывы рисовать были минимальными. Вы должны заполнить динамический буфер вершин со всеми координатными позициями, а затем сделать их всеми с помощью одного примитивного вызова Draw (Indexed).

+0

Я рисую техникой дозирования. 512 очков в одном обратном вызове. Можете ли вы дать мне пример? –

+0

@DilhanGeeth: У меня действительно нет примеров, как насчет того, чтобы поместить некоторые из вашего кода ... – Goz

+0

http://pastebin.com/t7eVxG9j –