Я вставил псевдокод для своего дизайна в OpenGL.
Что у меня есть:
- В функции createVAOs () ниже я создал все нужные мне вершины (VBO) и индексы (EBO), чтобы нарисовать красивые квадраты.
- Затем в основном цикле в функции draw_textures () я привязываю текстуру и рисую элемент с текстурой к вершинам VBO.
Чего я хочу:
- Теперь я хочу динамически менять VAO. Представим: я хочу добавить новую текстуру к определенному треугольнику или даже удалить несколько треугольников на моем VAO. Но поскольку VAO был создан до цикла, у меня проблема ... Я не знаю, "разумно" или "оптимизировано" создавать VAO каждый раз внутри цикла ..
Мой вопрос:
- Разумно ли размещать создание VAO (VBO и EBO) внутри цикла рендеринга? Если нет, то какое решение для этого лучше всего?
Рассмотрим мой псевдокод ниже:
int main (void)
{
//Init OpenGL, Glew,etc
//Load Shaders
createVAOs(); //triangles vertices (VBO) and indices (EBO)
while (!glfwWindowShouldClose(m_window)) //the LOOP!
{
//updateEvents ();
//use shaders
//bindVAO();
/*createVAOs();*/ //<---- is this wise??
draw_textures();
//freeVAO
//swapBuffers
}
return 0;
}
void draw_textures()
{
glBindTexture(GL_TEXTURE_2D, texture.id());
glDrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_INT, (void*)(0));
}