OpenGL VAO笔记
- glGenVertexArrays 创建VAO
- glBindVertexArray 绑定VAO为当前使用
- glVertexAttribPointer 设置VAO的引用数据
调用此方法,用于将该Array与当前绑定在GL_ARRAY_BUFFER上的Buffer绑定
glBindBuffer(GL_ARRAY_BUFFER, vbo);
//调用此方法,用于将该Array与当前绑定在GL_ARRAY_BUFFER上的Buffer绑定
//可以重新调用来切换绑定
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
此时重新调用glBindBuffer切换当前应用的Buffer,不会影响到glDrawArray.VAO只是对当前VBO内数据的索引引用,故而此时删除了VBO,那么此VAO使用将会错误
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
//如果此时删除VBO,将会导致错误
glDeleteBuffer(1,&vbo); //
glDrawArray(0,3);//此处会崩溃
可以重新调glVertexAttribPointer用来切换VAO的数据
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);//此时VAO的数据引用vbo
//切换
glBindBuffer(GL_ARRAY_BUFFER, vbo2);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);//此时VAO的数据引用vbo2