Буферы вершин OpenGL: можно ли обойтись без буфера индекса? - PullRequest
3 голосов
/ 28 января 2012

Я получил работающий код, который использует VBO и IBO: когда я анализирую свою геометрию, я строю массивы вершин и индексов для треугольников, а затем вызываю glDrawElements с GL_TRIANGLES.

Я читал о возможности сигнализировать о перезапуске примитива в индексном буфере, здесь , примерно на полпути вниз по странице. Это хорошо, но мне интересно, возможно ли полностью отказаться от буфера индекса и просто сообщить о примитивном перезапуске, отправив определенное значение вершины (например, нулевое значение первого атрибута будет бесконечностью)?

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

Ответы [ 2 ]

6 голосов
/ 28 января 2012

Если вы не хотите использовать индексный буфер, тогда вы можете использовать glDrawArrays. Он будет визуализировать примитив только из буфера вершин. Объедините это с инстансингом, и вы сможете рисовать несколько треугольных вееров без индексного буфера.

Но из соображений производительности, если ваши треугольники сетки имеют общие вершины, вы должны использовать индексный буфер.

4 голосов
/ 28 января 2012

Как четко указано на этой странице:

Технически законно использовать это с неиндексированным рендерингом. Вы не должны этого делать, так как это не даст вам полезного результата.

Примитивный перезапуск для индексированного рендеринга. Нет способа перезапустить примитив на основе значения атрибута вершины.

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