Можно ли привязать сегмент объекта индексного буфера (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'?