2014-10-05 178 views
-2

所以我知道,你可以使用生成缓冲区:访问缓冲区在OpenGL

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

有人告诉我,这将产生的Buffer地址1个缓冲。我也告知,如果我这样做:

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

然后,它会在Buffer地址生成2个缓冲区。那么我如何访问这个第二缓冲区?

回答

6

你应该传递一个数组/矢量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]); 
3

虽然有些人认为普通阵列在C过时++(我并不想开始一个神圣的战争)值得指出的是,这也适用于不使用任何C++容器。旧式阵列将工作得很好:

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

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