OpenGL中的地形小地图?

时间:2009-11-14 06:26:30

标签: c++ opengl graphics

所以我拥有的本质上是一款游戏...这款游戏中有地形。我希望能够创建一个自上而下的视图迷你地图,以便“玩家”可以看到他们的去向。我在地形上做了一些阴影等,所以我希望它也能在小地图中出现。看起来我只需要创建第二个摄像头,并以某种方式让相机的显示器显示在特定的盒子中。我也在想像镜子一样的东西。

我正在寻找可以采取的方法,这实际上会给我与目前相同的观点,只是自上而下......这看起来可行吗?随意提问......谢谢!

2 个答案:

答案 0 :(得分:5)

执行此操作的一种方法是创建一个FBO(帧缓冲区对象),其中附加了渲染缓冲区,渲染您的迷你地图,然后将FBO绑定到纹理。然后,您可以将纹理映射到您想要的任何内容,通常是四边形。您可以为各种HUD对象执行此操作。这也意味着您不必像主视图那样经常重绘HUD /菜单对象的内容;仅根据需要更新关联的缓冲区。在这种情况下,您经常需要对要渲染到FBO的对象/场景进行下采样(在多边形计数意义上)。您要检查的API中的函数是:

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

gamedev.net上有关于使用FBO的文章。另一个潜在的优化是,如果小地图的内容是静态的,你只是将摄像机移动到这个静态视图上(实际上只是一个地图)。您可以渲染地图的一部分,该部分比您实际想要显示给玩家的地图大得多,并通过调整其映射到的对象的纹理坐标来伪造相机。这仅适用于您的小地图在正投影中。

答案 1 :(得分:1)

好吧,我对你的具体问题没有答案,但在游戏中使用上面的正交透视图将世界渲染成图像并将其用于小地图时很常见。它至少比在运行中渲染时性能更低。