По моим наблюдениям любые настройки, кроме glPointSize = 1, могут быть действительно медленными на некоторых аппаратных средствах. Если вам нужны спрайты, лучше просто нарисовать текстурированный квад. Вы получаете гораздо больший контроль и без ограничений по размеру. Чтобы получить четырехугольную грань в нужном направлении, примените к нему обратное преобразование камеры. То есть умножьте его на стек преобразования.
Если у вас возникли проблемы с инвертированием матрицы, либо найдите простой алгоритм (почти любой алгоритм инверсии подойдет, так как матрица имеет размер 3x3 или не более 4x4), либо не забудьте сохранить обратное значение для каждого частичного преобразования, которое вы тоже делаете. То есть если повернуть кулачок на 45 ° по оси x, повернуть обратное на -45 ° и т. д.