Один из способов сделать это - создать FBO (объект кадрового буфера) с прикрепленным буфером рендеринга, визуализировать к нему миникарту и затем привязать FBO к текстуре. Затем вы можете сопоставить текстуру с чем угодно, обычно с квадратором. Вы можете сделать это для всех видов объектов HUD. Это также означает, что вам не нужно перерисовывать содержимое ваших объектов HUD / меню так часто, как ваш основной вид; обновляйте связанный буфер только так часто, как вам требуется. Вы часто захотите уменьшить (в смысле количества полигонов) объекты / сцены, которые вы рендерите в FBO для этого случая. Функции API, которые вы хотите проверить:
- glGenFramebuffersEXT
- glBindFramebufferEXT
- glGenRenderbuffersEXT
- glBindRenderbufferEXT
- glRenderbufferStorageEXT
- glFrambufferRenderbufferEXT
- glFrambufferTexture2DEXT
- glGenerateMipmapEXT
Есть описание использования FBO на gamedev.net . Другая потенциальная оптимизация заключается в том, что если содержимое миникарты статично и вы просто перемещаете камеру над этим статическим видом (на самом деле просто карта). Вы можете визуализировать часть карты, которая намного больше, чем та, которую вы действительно хотите отобразить, игроку и подделать камеру, отрегулировав текстурные координаты объекта, на который она отображается. Это работает, только если ваша миникарта находится в ортографической проекции.