Мини-карта местности в OpenGL? - PullRequest
2 голосов
/ 14 ноября 2009

Итак, у меня есть то, что по сути является игрой ... В этой игре есть местность. Я хотел бы иметь возможность создать мини-карту вида сверху вниз, чтобы «игрок» мог видеть, куда они идут. Я делаю некоторые тени и т.д. на местности, поэтому я бы хотел, чтобы это также отображалось на миникарте. Кажется, мне просто нужно создать вторую камеру и каким-то образом заставить дисплей этой камеры отображаться в определенном поле. Я также думаю, что что-то вроде зеркала будет работать.

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

Ответы [ 2 ]

5 голосов
/ 14 ноября 2009

Один из способов сделать это - создать FBO (объект кадрового буфера) с прикрепленным буфером рендеринга, визуализировать к нему миникарту и затем привязать FBO к текстуре. Затем вы можете сопоставить текстуру с чем угодно, обычно с квадратором. Вы можете сделать это для всех видов объектов HUD. Это также означает, что вам не нужно перерисовывать содержимое ваших объектов HUD / меню так часто, как ваш основной вид; обновляйте связанный буфер только так часто, как вам требуется. Вы часто захотите уменьшить (в смысле количества полигонов) объекты / сцены, которые вы рендерите в FBO для этого случая. Функции API, которые вы хотите проверить:

  • glGenFramebuffersEXT
  • glBindFramebufferEXT
  • glGenRenderbuffersEXT
  • glBindRenderbufferEXT
  • glRenderbufferStorageEXT
  • glFrambufferRenderbufferEXT
  • glFrambufferTexture2DEXT
  • glGenerateMipmapEXT

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

1 голос
/ 14 ноября 2009

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

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