Чтобы ответить на ваш вопрос, да, многие VBO замедляют работу. Больше полисов обычно замедляет рендеринг, но большее количество вызовов отрисовки имеет гораздо больший успех. Вы хотите минимизировать изменения состояния и отрисовки, а также количество имеющихся у вас буферов (и использование памяти).
Я бы предложил сначала взглянуть на буферы и выяснить, сколько вам нужно . Если вы можете создать геометрию пакета / экземпляра, объединить статическую геометрию в один буфер, более эффективно использовать буфер и т. Д.
Как только вы сократили буферы до минимально возможного, вы захотите использовать отбраковку нескольких сортов. Видимость, как по усечённой (возможно, в октриевой), так и окклюзии, может значительно повысить производительность. Основная идея состоит в том, чтобы дисквалифицировать геометрию как можно быстрее и проще, поэтому вы начинаете с грубых тестов (октри), затем несколько более детально (возможно, AABB и / или упрощенный корпус), затем окклюзия, затем фактически рисуете.
Вот хорошая статья об отбраковке frustrum , которая немного затрагивает quadtree (и, соответственно, octrees). Диаграммы, пояснения и некоторые примеры кода.
Статьи об отборе окклюзии OpenGL кажутся немного менее распространенными, хотя эта статья из GPU Gems может быть хорошей отправной точкой.