OpenGL - выборочный рендеринг мира - PullRequest
4 голосов
/ 02 ноября 2011

Я строю миниатюрный город с минимальным внешним видом города (дороги, здания, деревья и т. Д.), В котором вы можете передвигаться.Я знаю, что рендеринг всей модели, установленной в каждом кадре, не работает ...

Так что кто-нибудь может дать мне представление о стандартной (но самой простой) процедуре, используемой для выборочного рендеринга только видимых частей системы?Я имею в виду, просто отображая только видимый материал (относительно положения камеры) и не отображая невидимую часть ... Я использую VC ++ и GLUT API.

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

Может быть эта статья в Википедии предоставляет очень простое введение в область техники выбраковки.

Хорошей отправной точкой и одним из самых простых методов является отбраковка усеченного вида.С помощью этого метода вы проверяете для каждого объекта в вашей сцене, находится ли он внутри объема просмотра (усмотрение просмотра).Это в основном сводится к проверке некоторого упрощенного ограничивающего объема геометрии (например, прямоугольника или сферы, которая полностью содержит геометрию), если он находится внутри поля зрения, определяемого шестью плоскостями.

Это может быть дополнительнооптимизируется путем группировки объектов по их положению и создания так называемой иерархии ограничивающих томов. Таким образом, вы, например, сначала проверяете, находится ли весь городской блок внутри тома просмотра (используя ограничивающий том, содержащий весь блок), и только если онВы также проверяете отдельные дома.

Более сложная техника - это выборка окклюзии, которая означает, что объект полностью скрыт за другим объектом.Поскольку эти методы могут стать значительно более сложными, это должно (если сделано) фактически быть сделано после отбора усеченного вида.OpenGL имеет аппаратные запросы окклюзии, которые могут помочь вам определить, является ли объект действительно видимым, но они требуют некоторой дополнительной работы, чтобы работать хорошо.Специально для городов могут быть специальные методы двумерного окклюзионного отбора (давно я слышал об этом, не знаю).

Это просто очень широкий обзор, не стесняйтесь искать в Google отдельные ключевые слова.Это всегда хорошая идея, чтобы тщательно взвесить, если дополнительные накладные расходы процессора того стоят (особенно при использовании сложных методов отбора окклюзии), учитывая, что в настоящее время существует тенденция объединять как можно больше геометрии в один вызов отрисовки (кстати,Я надеюсь, что вы не используете немедленный режим glBegin/glEnd, в противном случае изменение его на массивы вершин или более качественные VBO будет первым пунктом вашей повестки дня).Но выборка усеченного вида может быть хорошей и легкой отправной точкой, особенно если город становится довольно большим.

0 голосов
/ 03 ноября 2011

Google "деревья двоичного пространства".

Деревья BSP являются хорошим средством определения того, что следует визуализировать, исходя из угла обзора и положения камеры. Шутеры от первого лица старой школы, то есть Quake и др. , использовали их (или, по крайней мере, какое-то происхождение принципа).

Вот хороший FAQ .

Другие хорошие ресурсы: ссылка ссылка

...