Визуализация векторного поля с помощью точечных спрайтов в OpenGL
Я хотел бы визуализировать векторное поле с OpenGL. Прямо сейчас у меня есть 3D-куб, заполненный точками, которые мне нужно заменить стрелками. Я много читал о точечных спрайтах в OpenGL, и они, кажется, вполне соответствуют моим потребностям.
Я еще не работал с текстурами, поэтому есть некоторые вопросы относительно их использования вместе с точечными спрайтами:
Прежде всего, возможно ли легко заменить мои точки стрелками, просто используя текстуру? Если это так, возможно ли вращать или масштабировать эти точечные спрайты в произвольной степени с помощью шейдеров?
Если есть другие возможности, кроме точечных спрайтов для достижения этого, было бы также здорово услышать о них. Я использую OpenGL 4.2.
2 ответа
Точечные спрайты всегда выровнены по экрану. И они имеют максимальный размер, зависящий от реализации.
Если вам нужно сделать что-то вроде этого, вы должны использовать геометрический шейдер, который берет точки в качестве входных данных и выводит квад (как 4 вершины треугольной полосы). Тогда вы можете делать все, что хотите.
Обратите внимание, что вы должны попытаться передать как можно меньше информации из GS. В идеале для максимальной производительности вы должны выводить только gl_Position
и к vec2
указывая, где в квадроциклах находится конкретное место.
Можно ли... масштабировать эти точечные спрайты в произвольной степени, используя шейдеры?
Нет, точечные спрайты имеют верхний предел, определенный реализацией.