вы можете сделать что-то подобное для представления частицы,
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
Есть и другие способы, в которых вам даже не нужно изменять буфер ... вы можете вычислить точку для траектории, учитываяНачальная позиция и время, прошедшее с начала, но тогда будет сложнее реализовать эффект силы, вызванной движением корабля.Таким образом, вы должны найти лучший метод, который соответствует вашим потребностям.
РЕДАКТИРОВАТЬ: Извините, я хотел сказать «динамический буфер вершин» для одного вызова