Так что я недавно узнал о VAO (объект Vertex Array), и пока они кажутся довольно удивительными, но у меня есть проблема, которую я не могу решить. У меня есть куча моделей, их состояния вершин хранятся в отдельных VAO, поэтому один вызов
glBindVertexArray(VAO);
это все, что нужно, чтобы начать рисовать экземпляр этого. Проблема заключается в том, что мне нужно связать дополнительный VAO, содержащий данные для
glDrawElementsInstanced();
вызов. Таким образом, он содержит данные, такие как смещение, UV-смещение, наложение цвета и т. Д. Когда я связываю это, предыдущий, кажется, сам себя не связывает, что, я думаю, имеет смысл в OpenGL, но я не уверен, что делать, чтобы оба активных ?
Идея состоит в том, чтобы нарисовать все статические объекты, которые используют одну и ту же модель, без загрузки данных за кадр. Это неправильный подход полностью?
Когда я связываю это, предыдущий, кажется, сам развязывается, что имеет смысл в OpenGL, я думаю, но я не уверен, что делать, чтобы оба были активны?
Конечно, это развязывает. Вот как работает OpenGL. Это конечный автомат, и вы хотите иметь два активных состояния одновременно.
Идея состоит в том, чтобы нарисовать все статические объекты, которые используют одну и ту же модель, без загрузки данных за кадр.
Если они не меняются, то не меняйте их. Вы просто должны связать и активировать компоненты вершины (как объяснено Вот).
Других решений пока нет …