Можно ли привязать сегмент объекта индексного буфера (IBO)?

Давайте представим сцену, состоящую из 3 объектов (2 коробки и плоскость). Эти 3 сетки хранятся в уникальном объекте буфера вершин (VBO) следующим образом:

VBO(id = 1) {[Box_1_vertex][Box_2_vertex][Box_3_vertex]}

В настоящее время я использую определенный объект индексного буфера (IBO) для управления индексацией вершин каждой сетки моей сцены следующим образом:

IBO(id = 2) {Box_1_index}
IBO(id = 3) {Box_2_index}
IBO(id = 4) {Box_3_index}

Итак, для рендеринга моей сцены мне нужен уникальный вызов привязки для моего буфера вершин и 3 вызова привязки для буфера индекса следующим образом:

VBO(id = 1)->Bind()
{
    FOR_EACH(IBO in IBO_LIST(size = 3))
    {
         (*IBO)->Bind();
         {
            glDrawElements(...);
         }
    }
}

Поэтому мне интересно, возможно ли сохранить все индексы (Box_1_index + Box_2_index + Box_3_index) в уникальном IBO (например, для VBO) и использовать вместо функции glBindBuffer, но на этот раз функцию glBindBufferRange, чтобы сосредоточиться на моих данных IBO?

Таким образом, у меня будет следующий шаблон кода:

VBO(id = 1)->Bind()
{
    IBO(id = 2)->Bind();
    {
        glDrawElements(...);
    }
}

Но согласно официальной документации OpenGL, первым параметром функции 'glBindBufferRange' может быть GL_TRANSFORM_FEEDBACK_BUFFER или GL_UNIFORM_BUFFER, но не GL_ELEMENT_ARRAY_BUFFER (в настоящее время я использую этот для привязки IBO).

Итак, возможно ли связать определенный сегмент данных, содержащихся в конкретном IBO, используя функцию 'glBindBufferRange'?

0 ответов

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