Идеи для интересного эффекта частиц в C ++ и DirectX. пожалуйста - PullRequest
0 голосов
/ 31 августа 2011

В настоящее время я делаю игру со своим собственным игровым движком, который я написал на C ++, и использую самый последний DirectX SDK.

Игра представляет собой космический шутер сверху вниз (с довольно интересным поворотом), и я ожидаю получить эффект туманности, через который игрок будет летать. Я действительно хочу попробовать это приятное тактильное ощущение сотен частиц, движущихся с пути корабля игрока, когда он летит в них. Что-то вроде того, как частицы движутся по пути игрока в Geomtry Wars на XBLA.

Я опытный программист, когда дело доходит до C ++. Однако я не знаю, как начать реализовывать этот эффект. У кого-нибудь есть какие-нибудь крутые идеи или варианты дизайна, которые я мог бы рассмотреть? Не стесняйтесь отвечать на любой интересующей вас глубине.

Спасибо, Matt

1 Ответ

1 голос
/ 31 августа 2011

вы можете сделать что-то подобное для представления частицы,

struct Particle
{
      D3DXVECTOR3 position;
      float angle;
};

, а затем просто обновить координаты x и y (или x и z, если ваш корабль движется в этой плоскости) со скорости и вычислитьновая высота с некоторой базовой формулой вместо физической, т.е.что-то с «грехом» и «временем», поэтому оно не слишком далеко от плоскости, где движется корабль.Вы можете иметь их все в динамическом вершинном шейдере и визуализировать их все вместе в одном вызове.

Для directx 9 у вас есть "точечные спрайты" http://msdn.microsoft.com/en-us/library/bb147281%28v=vs.85%29.aspx

Я думаю, что для новых версий вынадо делать работу в шейдере, но я не уверен.Идея заключалась бы в том, чтобы просто отправить точки с позициями и, возможно, каким-то атрибутом, который вам нужен, и создать изображение частицы один раз в шейдере (квад с некоторой текстурой, скорее всего).

Вы, вероятно, найдете эту ссылку полезной, по крайней мере, чтобы получить некоторые идеи.Это немного устарело, но многие концепции все еще применимы: http://www.markmark.net/clouds/RTCRPubs.html

Есть и другие способы, в которых вам даже не нужно изменять буфер ... вы можете вычислить точку для траектории, учитываяНачальная позиция и время, прошедшее с начала, но тогда будет сложнее реализовать эффект силы, вызванной движением корабля.Таким образом, вы должны найти лучший метод, который соответствует вашим потребностям.

РЕДАКТИРОВАТЬ: Извините, я хотел сказать «динамический буфер вершин» для одного вызова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...