Рисование 3D-линии в OpenGL - PullRequest
       0

Рисование 3D-линии в OpenGL

1 голос
/ 30 апреля 2011

Когда вы рисуете линию в OpenGL, glLineWidth создает линию фиксированного размера, независимо от того, насколько близка эта линия к вам.

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

То, что я ранее сделал, это нарисовал обычный GL_LINE до точки, где линия станет больше, чем размер в пикселях, а затем продолжил с прямоугольником от этой точки. Однако это не так быстро, как просто перебрасывать все в массив вершин или VBO, так как его нужно пересчитывать каждый кадр.

Какие еще методы доступны? Или я застрял с этим?

Ответы [ 3 ]

0 голосов
/ 30 апреля 2011

Если вы просто рисуете ряд линий и хотите получить быстрый и легкий эффект глубины, попробуйте добавить туман. Ослабление линий по мере того, как они отступают, заставляет наш мозг думать, что они 3D. Это не сработает, если ближайшие 100 * действительно близки к зрителю.

0 голосов
/ 30 апреля 2011

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

0 голосов
/ 30 апреля 2011

Мне нравится использовать градуированную текстуру для рисования линий:

enter image description here

Это действительно альфа моей текстуры.Таким образом, у вас полностью непрозрачный центр, постепенно исчезающий по краям.Затем вы можете нарисовать линию, используя прямоугольник с точками:

(x1, y1,0,0), (x2, y1,1,0), (x1, y2,0,1), (x2, y2,1,1)

, где последние две записи в каждом кортеже - это u и v текстуры.Это выглядит очень гладко.Вы можете даже соединить множество очень маленьких прямоугольников, чтобы сделать изогнутые линии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...