OpenGL, сколько рисовать сразу? - PullRequest
2 голосов
/ 31 августа 2011

Я действительно ненавижу спрашивать, что походит на совершенно глупый вопрос, но мое отсутствие формальной подготовки заставило меня бросить этот вопрос прямо там.

Я дохожу до точки в текущем игровом проекте, гдерендеринг основной игровой области / уровня приближается, и есть кое-что, в чем я не уверен, в основном из-за опасений относительно того, сколько на самом деле видно против того, сколько бросить в команды дро.

Это может быть не такчто будет сделано, но для более простого объяснения я приведу эти примеры.В настоящее время я использую OpenGL ES 1.1.

Скажем, у меня есть персонаж, и вид от третьего лица, близкий к персонажу.У меня большая область уровней с комнатами и т. Д. Нужно ли мне:

  1. Бросить весь уровень в команды рисования и предположить, что буферы отсечения и глубины выполняют работу по обрезке того, что нет 'Вы видели / визуализировали на экране?

  2. Разбейте область на части, видя только те участки, которые могли возможно увидеть?

  3. Что-нибудь еще более эффективное?

Ответы [ 3 ]

3 голосов
/ 31 августа 2011

Если вы создаете ограниченную среду, как это обычно бывает в играх FPS, тогда изучите Portal Occlusion.

Это популярная тема, и такие книги, как 3D Math Primer для графики и разработки игр и Рендеринг в реальном времени , имеют хороший обзор техники.Другие тексты могут предоставить более подробное / подробное прочтение на эту тему.

BSP-деревья также могут быть полезны в этом типе настройки.

Если вы создаете открытый, большой мир, подобный тому, чтов RPG, затем рассмотрите использование Quad / Oct-деревьев.

2 голосов
/ 31 августа 2011

В идеале вы захотите отправлять в GPU только видимые вершины. В противном случае вы потеряете производительность. С другой стороны, попытка сделать идеальный отбор может потребовать слишком много циклов ЦП. Вам придется разбить область в некоторых участках и попытаться нарисовать только то, что видно. Если возможно, постарайтесь быть максимально точным, но также не тратьте слишком много времени на процессор.

Всегда в профиле и проверке:)

1 голос
/ 31 августа 2011

Это зависит от того, насколько хорошо ваш драйвер может оптимизировать рендеринг. Вам придется попробовать и измерить производительность.

Если производительность не достаточно хорошая, вот несколько советов:

  • Разрежьте всю игру на области, которые не могут быть видны друг другу (если у вас есть область под землей, нет возможности увидеть поверхность, поэтому вы можете вырезать ее). Вам просто нужен способ синхронизировать переходные зоны (спуск к подземной зоне) в обеих областях.

  • Большинство водителей довольно хорошо игнорируют детали позади игрока, используя octrees . Если это не работает для вас, создайте свое собственное октябрьское дерево, чтобы оптимизировать модель, которую вы передаете визуализатору.

  • Геометрия часто не проблема, текстурирование требует времени (много чтения из памяти). Многие драйверы позволяют использовать текстуры с разными разрешениями ( mipmapping ) для ускорения процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...