glPolygonOffset() ошибки с линиями

У меня есть следующий код:

glEnable(GL_POLYGON_OFFSET_LINE);
glPolygonOffset(1,1); // or 40,40 etc... doesnt help at all

Но линии все еще z-борются, это распространенная ошибка или что-то в этом роде...? Мои линии имеют толщину 1,0f, и я рисую их последними в сцене.

Также я отключил GL_ALPHA_TEST и GL_LINE_SMOOTH и включил GL_BLEND и GL_COLOR_LOGIC_OP.

Редактировать: я уже пробовал GL_POLYGON_OFFSET_FILL, это не помогает.


person Community    schedule 07.01.2010    source источник


Ответы (2)


GL_POLYGON_OFFSET_LINE работает только для рендеринга полигонов с glPolygonMode(GL_FRONT_AND_BACK, GL_LINE). Если вы рисуете примитивы с помощью GL_LINES, это не работает. В этом случае вам придется вручную смещать вершины.

person Andreas Brinck    schedule 07.01.2010
comment
Ах, значит, мне нужно рисовать линии в многоугольном режиме. - person ; 07.01.2010
comment
Рисование линий в виде бесконечно тонких многоугольников не будет работать; GL вычисляет нормаль и использует ее для смещения вершин. В этом случае нормаль к многоугольнику, который вы рисуете, будет вектором нулевой длины. - person Tarydon; 07.01.2010
comment
@Tarydon Это не то, что я предлагаю, glPolygonMode(GL_FRONT_AND_BACK, GL_LINE) - это встроенный каркасный режим OpenGL. - person Andreas Brinck; 07.01.2010
comment
@Андреас: Извинения. Мой комментарий был направлен на замечание Новичка о том, что он хотел рисовать линии в многоугольном режиме. - person Tarydon; 07.01.2010
comment
или же сместите полигоны, по которым вы рисуете линии (см. opengl.org/resources /faq/technical/polygonoffset.htm) - person Bahbar; 07.01.2010
comment
да, я использую GL_QUADS и режим каркаса, работает отлично, спасибо. - person ; 09.01.2010
comment
+1 к этому ответу; это объясняется также в вопросе 13.040 на странице, размещенной Бахбаром - person Zac; 20.06.2013

Попробуйте вместо этого включить GL_POLYGON_OFFSET_FILL. (Я предполагаю, что линии противоречат глубине полигонов, которые вы визуализировали ранее?)

person Tarydon    schedule 07.01.2010
comment
Возможно, вы не решили его проблему, но вы решили мою 2 года спустя. Спасибо! - person Haldean Brown; 06.05.2012