是否可以绑定一段索引缓冲区对象(IBO)?

时间:2015-03-15 16:24:52

标签: opengl shader index-buffer

让我们想象一个由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)。

那么,是否可以使用函数' glBindBufferRange'来绑定特定IBO中包含的特定数据段?

0 个答案:

没有答案