glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
// texture coord attribute
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)(3 * sizeof(float)));
glEnableVertexAttribArray(1);
一般我们绑定数据是通过以上代码
这里并没有使用VAO,当我在两个类中有不同的坐标数据时,我分别在两个类中调用了以上代码,这时我发现,按照执行的顺序,第一个类的数据被覆盖掉了,也就是第一个类中我想展现的图案并没有出来。
通过VAO就可以解决这个问题,在每个类中各生成一个VAO,每个VAO有各自的数据空间,这样就不会导致数据丢失。