在OpenGL中访问缓冲区



所以我知道您可以使用生成缓冲区

GLuint Buffer = 0;
glGenBuffers (1, &Buffer);

我被告知这将在Buffer的地址中生成1个缓冲区。我还被告知,如果我这样做:

GLuint Buffer = 0;
glGenBuffers (2, &Buffer);

然后,它将在Buffer的地址中生成2个缓冲区。那么我该如何访问第二个缓冲区呢?

您应该将数组/向量传递给glGenBuffers,例如:

std::vector<GLuint> buffers(2); //or std::array<GLuint, 2> buffers;
glGenBuffers(2, &buffers[0]); 
...
// Access buffer elements at buffers[0] and buffers[1]
...
glDeleteBuffers(2, &buffers[0]);

虽然有些人认为纯数组在C++中已经过时了(我并不是想发动一场圣战),但值得指出的是,这也可以在不使用任何C++容器的情况下工作。一个老式的数组可以正常工作:

GLuint buffers[2];
glGenBuffers(2, buffers);

然后使用buffers[0]buffers[1]引用您生成的两个缓冲区名称。

最新更新