Mutliple смещения с индексированными VBO в OpenGL

У меня есть два VBO, один полный данных, другой полный индексов в этих данных. Оба являются объединением различных ячеек. Есть ли способ нарисовать эти вещи в таком формате?

Визуально:

Each [] denotes a mesh
Vertex VBO: [  vertex data ][  vertex data ][  vertex data ]
Index  VBO: [indices into ^][indices into ^][indices into ^]

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

1 ответ

Решение

Если VBO связан с glVertexAttribPointer (а также с устаревшим gl…Pointer), функции принимают смещение байта в качестве параметра "данных". Вместо приведения числа к void* Я предлагаю вам поставить функцию подписи к uintptr_t (находится в stdint.h), что и должно происходить.

Таким же образом вы можете сместить в массив индекса с помощью glDrawElements: если привязан буфер индекса, он смещает байтовое смещение в буфер.

Другой подход будет использовать glDrawElementsBaseVertex.

Другие вопросы по тегам