Визуализация векторного поля с помощью точечных спрайтов в OpenGL

Я хотел бы визуализировать векторное поле с OpenGL. Прямо сейчас у меня есть 3D-куб, заполненный точками, которые мне нужно заменить стрелками. Я много читал о точечных спрайтах в OpenGL, и они, кажется, вполне соответствуют моим потребностям.

Я еще не работал с текстурами, поэтому есть некоторые вопросы относительно их использования вместе с точечными спрайтами:

Прежде всего, возможно ли легко заменить мои точки стрелками, просто используя текстуру? Если это так, возможно ли вращать или масштабировать эти точечные спрайты в произвольной степени с помощью шейдеров?

Если есть другие возможности, кроме точечных спрайтов для достижения этого, было бы также здорово услышать о них. Я использую OpenGL 4.2.

2 ответа

Решение

Точечные спрайты всегда выровнены по экрану. И они имеют максимальный размер, зависящий от реализации.

Если вам нужно сделать что-то вроде этого, вы должны использовать геометрический шейдер, который берет точки в качестве входных данных и выводит квад (как 4 вершины треугольной полосы). Тогда вы можете делать все, что хотите.

Обратите внимание, что вы должны попытаться передать как можно меньше информации из GS. В идеале для максимальной производительности вы должны выводить только gl_Position и к vec2 указывая, где в квадроциклах находится конкретное место.

Можно ли... масштабировать эти точечные спрайты в произвольной степени, используя шейдеры?

Нет, точечные спрайты имеют верхний предел, определенный реализацией.

Другие вопросы по тегам