Гарантирует ли OpenGL порядок растеризации для GL_LINES или GL_LINE_STRIP? - PullRequest
0 голосов
/ 11 декабря 2018

Если я отрисовываю линию Poly с использованием GL_LINES или GL_LINE_STRIP, могу ли я предположить, что сегменты линии с низкими индексами вершин сначала отображаются в буфере кадра?Например, когда я задаю линейку с использованием вершин v0, v1, v2, могу ли я предположить, что сначала визуализируется сегмент v0v1, а затем v1v2?

1 Ответ

0 голосов
/ 11 декабря 2018

Стандарт OpenGL определяется тем, что все будет вести себя «как если бы» все выполнялось в определенном порядке.Как таковой, он определяет жесткий порядок для почти всего.

Когда дело доходит до вершин и примитивов в команде рендеринга, да, порядок есть.В частности, все берется в том порядке, в котором вы предоставляете данные.Каждая вершина берется по очереди от первой к последней в вызове glDrawArrays/Elements.И поскольку вершины преобразуются в примитивы, эта сборка упорядочивает сгенерированные примитивы.Примитивы генерируются в порядке, в котором встречаются их инцидентные вершины.

Или, скорее, OpenGL ведет себя «как если бы» следовал порядку отправки.Однако дело в том, что единственное место, где вы можете сказать , является ли что-либо из этого истинным, находится в том порядке, в котором их фрагменты помещаются в кадровый буфер.Таким образом, реализации могут обрабатывать примитивы асинхронно, но затем выполнять смешивание данных отдельных пикселей из этих примитивов на основе порядка отправки.

Но это детали реализации.Дело в том, что если вы отрисовываете 2 линии в одном и том же вызове отрисовки, и они перекрываются, и у вас включено смешивание, OpenGL гарантирует , что они будут отрисованы, как если бы линия образовалась из первых двух вершин вмассив был полностью отрисован, затем отрисована линия, образованная из более поздней вершины (льдов).И, таким образом, они будут смешаны в этом порядке.

Единственные операции рендеринга, которые явно неупорядочены в OpenGL, - это некогерентные обращения к памяти и порядок примитивов, сгенерированных тесселяция .И последний только позволяет им быть неупорядоченными в этом патче;все примитивы из одного мозаичного патча должны быть визуализированы (как будто) перед любыми примитивами из более позднего.

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