Сегодня я сделал интересное, если запутанное открытие.glPolygonMode (GL_FRONT_AND_BACK, GL_LINE) против glDraw * (GL_LINE_STRIP ...)
До сих пор я получил штраф, используя glDraw*(GL_LINE_STRIP...)
(или связанные режимы рисования GL_LINE*
). Конечно, это всегда требует некоторого переупорядочения вершин, чтобы сделать одинаковые данные вершин без перебоев между GL_TRIANGLES
и GL_LINE_STRIP
, но все в порядке.
Тогда сегодня я снова представил старый код, который у меня был, и нашел среди него glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
. Я просмотрел его, и люди говорили, что, хотя GL_BACK
и GL_FRONT
устарели в контексте с 3,3 ядрами, glPolygonMode
не рассматривается, хотя поддерживается только GL_FRONT_AND_BACK
в качестве первого аргумента. Поэтому я попробовал его с GL_LINE
в качестве второго аргумента, а также glDraw*(GL_TRIANGLES...)
, и он не только отлично работал, но и не требовал явного переупорядочения вершин, необходимых для соответствия GL_LINE_STRIP
. (Я вернулся к более ранней конфигурации, чтобы проверить это).
Вопросы:
Что я должен использовать, в 3.3 ядра контексте? Является ли метод ОК? Причина, по которой я спрашиваю, заключается в том, что мне интересно, действительно ли строка
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
дает мне основной профиль, поскольку в конце концов это всего лишь намек на GLFW.Какой подход рекомендуется? Возникают ли последствия для работы? Конечно, это намного удобнее.
Почему есть
glDraw*(GL_LINE*...)
, если это можно сделать черезglPolygonMode
?
1: Оба метода в профиле основного профиля. 3: Потому что вы также можете рисовать линии, которые не образуют треугольников, например, прямую линию или круг и т. Д. – BDL
@BDL Спасибо! Позаботьтесь об этом в ответ? Я не возражаю против пункта 2; эти, о которых вы упоминали, достаточны. –
Что касается точки 2, 'glPolygonMode (...)' * (как используется в вашем вопросе) * создает линии на краях многоугольников, сохраняя при этом примитивный тип треугольником. Это имеет тонкие последствия для растеризации, отсечения, отображения текстур и других вещей, которые отличаются между примитивами треугольника и строки. Можно действительно спросить, почему даже «glPolygonMode (...)», когда вы можете делать то же самое с геометрией и шейдером фрагментов в наши дни, это удобство. –