В ядре OpenGL 3.2 и выше, геометрические шейдеры доступны для использования. Чтобы дать краткий обзор, вы бы только сказали OpenGL рисовать точки, которые представляют положения ваших частиц, и эти точки будут нормально проходить через вершинный шейдер, но затем, когда они попадают в геометрический шейдер, он строит прямоугольник (вне из двух трис), испуская вершины на следующую стадию конвейера. Наряду с вершинами вы можете программно генерировать нормали и координаты текстуры.
Поскольку все это делается аппаратно, я уверен, что это самый быстрый способ визуализации частиц точечного спрайта.