2015-10-09 2 views
0

Позволяет увидеть этот код:Изменение вершин массив объектов

glGenVertexArrays(1, &name); 
glBindVertexArray(name); 

glBindBuffer(GL_ARRAY_BUFFER, someBuffer1); 
glVertexAttribPointer(...); 

(...) 

glBindBuffer(GL_ARRAY_BUFFER, someBuffer2); 
glVertexAttribPointer(...); 

(...) 

glBindVertexArray(0); 

Что произойдет, если я решу сделать что-то вроде этого:

glBindVertexArray(name); 

glBindBuffer(GL_ARRAY_BUFFER, someBuffer3); 
glVertexAttribPointer(...); 

(...) 

glBindBuffer(GL_ARRAY_BUFFER, someBuffer4); 
glVertexAttribPointer(...); 

(...) 

glBindVertexArray(0); 

? Могу ли я изменить макет объявления вершин таким образом? Есть ли способы сделать это?

+0

Ум, да, делая то, что вы написали? –

+0

Извините, не узнал, на какие из вопросов вы ответили. Что произойдет, когда я снова вызову glVeretexAttribPointer? Будет ли исключен любой предыдущий glVeretexAttribPointer? – user3808059

+0

Да, он заменит предыдущее обязательство. –

ответ

0

Да. Именно поэтому простым решением избежать VAO в целом является создание и привязка одного к запуску программы. Тем не менее, это смягчает любые преимущества производительности, которые вы можете получить - переключение VAOs (или должно быть) быстрее, чем переопределение вершинного макета.

Смежные вопросы