Я хотел бы написать это в течение некоторого времени... как проект для университета, я написал (с другом) игру, в которой нужны хорошие взрывы и эффекты частиц. мы столкнулись с некоторыми проблемами, которые мы решили довольно элегантно (я думаю), и я хотел бы поделиться знаниями.
Итак, мы нашли этот учебник: Произвести эффект взрыва частицы, который казался достаточно простым для реализации с использованием Java с JOGL. прежде чем я отвечу, как именно мы реализовали этот учебник, я объясню, как выполняется рендеринг:
  Камера: это просто ортонормальный базис, который в основном означает, что он содержит 3 нормализованных ортогональные векторы и 4-й вектор, представляющий положение камеры. рендеринг выполняется с помощью gluLookAt:
glu.gluLookAt(cam.getPosition().getX(), cam.getPosition().getY(), cam.getPosition().getZ(), 
              cam.getZ_Vector().getX(), cam.getZ_Vector().getY(), cam.getZ_Vector().getZ(), 
              cam.getY_Vector().getX(), cam.getY_Vector().getY(), cam.getY_Vector().getZ());
 так что вектор камеры z на самом деле является мишенью, вектор y является вектором "вверх", а положение - это... позиция.
так (если поставить его в стиле вопроса), как реализовать хороший эффект частиц?
PS: все образцы кода и скриншоты в игре (как в ответе, так и в вопросе) берутся из игры, которая размещается здесь: Astroid Shooter
способ вычислить такую перпендикулярную плоскость не сложно:
поэтому каждый спрайт должен был дать ему собственный уникальный "рекламный щит".BTW, вычисление дымовых дорожек и искры искры sprites тоже было проблемой. мы создали еще один абстрактный класс, мы его назвали: 
как вы можете видеть, спрайты пересекаются друг с другом, поэтому, если мы посмотрим на 2 спрайта, который пересекается, часть 1-го спрайта находится за вторым спрайтом, а другая его часть находится напротив 2-го спрайта, что привело к некоторому странному рендеринг, где линии пересечения видны. обратите внимание, что даже если мы отключили 

