Моя стратегия создания наложения 2D-мини-карты, подобного этой, заключается в использовании glWindowPos2d
и glDrawPixels
, и я считаю, что это очень успешно. Вы захотите отключить общие функции OpenGL, такие как текстурирование, освещение и тест глубины. В следующем примере minimap_x
и minimap_y
- это координаты окна верхнего левого угла миникарты.
Например:
glDisable(GL_TEXTURE_2D)
glDisable(GL_LIGHTING)
glDisable(GL_DEPTH_TEST)
glWindowPos2d(minimap_x, window_height - (minimap_y + minimap_height))
glDrawPixels(minimap_width, minimap_height, GL_RGBA, GL_UNSIGNED_BYTE, minimap_image)
glEnable(GL_TEXTURE_2D)
glEnable(GL_LIGHTING)
glEnable(GL_DEPTH_TEST)
Вам необходимо указать данные minimap_image
.
В моих приложениях я обычно использую PyGame, поэтому миникарта находится на поверхности PyGame. Преобразование поверхности в необработанные данные изображения, используемые glDrawPixels
, выглядит следующим образом:
minimap_image = pygame.image.tostring(minimap_surface, "RGBA", True)