- // Clean up old attributes if they are no longer needed.
- for (set<GLint>::iterator attr_it = bound_attribute_indices->begin();
- attr_it != bound_attribute_indices->end(); ) {
- if (phase->attribute_indexes.count(*attr_it) == 0) {
- glDisableVertexAttribArray(*attr_it);
- check_error();
- bound_attribute_indices->erase(attr_it++);
- } else {
- ++attr_it;
- }
- }
-
- // Set up the new attributes, if needed.
- for (set<GLint>::iterator attr_it = phase->attribute_indexes.begin();
- attr_it != phase->attribute_indexes.end();
- ++attr_it) {
- if (bound_attribute_indices->count(*attr_it) == 0) {
- glEnableVertexAttribArray(*attr_it);
- check_error();
- glVertexAttribPointer(*attr_it, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
- check_error();
- bound_attribute_indices->insert(*attr_it);
- }
- }
+ // Bind the vertex data.
+ GLuint vao = resource_pool->create_vec2_vao(phase->attribute_indexes, vbo);
+ glBindVertexArray(vao);