вместо того, чтобы публиковать много кода, я буду интуитивно формулировать этот вопрос. Надеюсь, вы понимаете, к чему я иду.
Я делаю игру, и в коде у меня есть модельный класс, который загружает модель и устанавливает для нее VBO.
В функции загрузки он генерирует новый идентификатор VBO и загружает данные вершин из файла в этот буфер, привязывая его и т.д. (это отлично работает)
В начале программы я делаю один объект модели и загружаю файл .obj.
В функции рендеринга я просто вызываю функцию DrawArrays() (с необходимым дополнительным материалом), и, как я уже сказал, все отлично работает, поскольку модель появляется на экране без проблем.
Однако проблема заключается в том, когда я делаю два объекта модели в начале программы и загружаю другой .obj файл в каждый из них.
Проблема в том, что когда я играю, на экране рисуется только вторая модель.
Проблема заключается в том, что я не понимаю, как работает VBO.
Вот как я "думаю" о работе VBO.
Вы можете создать столько идентификаторов VBO, сколько захотите. Вы можете привязать каждый идентификатор, чтобы сделать его активным буфером. Вы можете загрузить данные вершин в этот буфер. Теперь у вас фактически есть много разных идентификаторов, каждый из которых ссылается на "набор данных вершин". Вызывая функцию DrawArray, он рисует каждый созданный вами буфер (эффективно отображая все ваши модели на экране)
Теперь я знаю, что это неправильно, потому что в моем ограниченном понимании я не вижу, как я могу включить/выключить модели. Но независимо от того, сколько учебников я смотрю, я не могу ответить на этот вопрос, потому что все они сосредоточены на отображении этого ОДНОГО ПЕРВОГО VBO, что, кстати, я могу сделать.
Итак... если бы это имело смысл, может кто-нибудь просветить меня?