* BaseVertex и gl_VertexID - PullRequest
       3

* BaseVertex и gl_VertexID

7 голосов
/ 17 сентября 2011

Я пролистал спецификации и форум OpenGL, но не смог разобраться в этом:

Предполагается, что версия команд рисования *BaseVertex должна быть добавлена ​​к переменной GLSL gl_VertexID? Как это работает, gl_VertexID содержит индекс, взятый из границы ELEMENT_ARRAY_BUFFER до того, как basevertex добавлено к нему.

Итак, мой вопрос: Это правильное поведение? Я бы предположил, что gl_VertexID должен содержать индекс, используемый для извлечения вершины.

Ответы [ 2 ]

5 голосов
/ 17 сентября 2011

Да, это правильный bahviour.Сценарий использования BaseVertex заключается в том, что вам нужно переключать только это одно значение, а не корректировать смещения буфера в массивах вершин с помощью функций gl*Pointer.

Идея состоит в том, что вы можете загружать данныеиз нескольких сеток (файлов моделей) в один VBO без необходимости настройки индексов.

0 голосов
/ 10 мая 2014

Ваше предположение верно. gl_VertexID должен включать смещение BaseVertex.

opengl wiki о встроенных переменных GLSL:

Примечание: к gl_VertexID будет применена базовая вершина.

о glDrawElementsBaseVertex:

gl_VertexID, передаваемый в Vertex Shader, будет индексом после смещения basevertex, а не индексом, полученным из буфера.

К сожалению, некоторые старые драйверы не реализовали это правильно.

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