0
当前在我的渲染函数中,我使用了VAO(顶点数组对象)和四个VBO(顶点缓冲对象)绑定在这个VAO上。在vbo绑定到一个vao之间切换
每个VBO,我绑定到VAO
glGenVertexArrays (1, & vaoID [0]); // Create our Vertex Array Object
glBindVertexArray (vaoID [0]); // Bind our Vertex Array Object so we can use it
int i = 0;
for (i = 0; i <4, ++i)
{
glGenBuffers (1,vboID [i]); // Generate Vertex Buffer Object
glBindBuffer (GL_ARRAY_BUFFER, vboID [i]); // Bind Vertex Buffer Object
glBufferData (GL_ARRAY_BUFFER, 18 * sizeof (GLfloat) vertices, GL_STATIC_DRAW);
glVertexAttribPointer ((GLuint) 0, 3, GL_FLOAT, GL_FALSE, 0, 0);
}
glEnableVertexAttribArray (0); // Disable Vertex Array Object
glBindVertexArray (0); // Disable Vertex Buffer Object
然后在我的渲染功能(伪),对于每一帧:
glBindVertexArray (vaoID [0]);
// here, I need to draw the four VBO, but only draws the first
glBindVertexArray (0);
我知道我可以把所有的几何形状在单个VBO,但有些情况下,其大小超过5Mb,并且这可能导致它未放置在GPU上。
如何切换所有绑定的VBO来绘制它们?
感谢“棘轮怪胎”,现在我问,为什么要使用VAO? ,如果我应该在每个帧的渲染函数中再次绑定每个vbo?否则,你可以给我举一个例子,说明如何将几个vbo链接到单个vao?谢谢! – user2303826 2014-11-03 23:00:42