OpenGL中的地形小地图?
问题描述:
所以我有什么本质上是一场比赛......这场比赛中有地形。我希望能够创建一个自上而下的视图小地图,以便“玩家”可以看到他们要去的地方。我在地形上做了一些阴影等,所以我希望它也能在小地图上出现。看起来我只需要创建第二台相机,并以某种方式让相机的显示屏显示在特定的框中。我也想像一面镜子那样工作。OpenGL中的地形小地图?
我正在寻找方法,我可以采取的基本上给我同样的看法,我目前有,只是自上而下......这似乎是可行的吗?随时提问...谢谢!
答
的一种方法是创建具有附渲染缓冲器的FBO(帧缓冲器的对象),渲染你的小地图到它,然后将FBO绑定到纹理。然后你可以将纹理映射到任何你喜欢的东西,通常是四边形。您可以为各种HUD对象执行此操作。这也意味着您不必像主视图那样频繁地重绘HUD /菜单对象的内容;只需要经常更新关联的缓冲区。对于这种情况,您通常会想要向FBO下采样(以多边形计数的方式)您渲染的对象/场景。你要检查到API中的功能是:
- glGenFramebuffersEXT
- glBindFramebufferEXT
- glGenRenderbuffersEXT
- glBindRenderbufferEXT
- glRenderbufferStorageEXT
- glFrambufferRenderbufferEXT
- glFrambufferTexture2DEXT
- glGen erateMipmapEXT
有关使用FBO gamedev.net的说明。另一个潜在的优化是,如果小地图的内容是静态的,并且您只是将相机移动到这个静态视图上(真的只是一张地图)。您可以渲染比实际想要显示给玩家的地图更大的一部分地图,并通过调整其映射到的对象的纹理坐标来伪造摄像机。这只适用于如果你的小地图是正投影。
答
好了,我没有回答您的具体问题,但它是常见的在游戏中使用正交的角度从上面的世界渲染的图像,并使用了小地图。它至少比运行中的性能密集程度低。要做到这一点
使用多个视口也可以工作吗?我可以渲染多边形到帧缓冲区吗?很明显,我很喜欢图形编程哈哈。 – Polaris878 2009-11-14 19:25:05
是的,您可以使用与您在窗口的帧缓冲区中正常绘制的方式完全相同的方式绘制FBO(与使用前缓冲区交换之前渲染到后台缓冲区相同)。你可以在每个FBO中使用不同的gluPerspective/gluLookAt。好处是,如果您不需要使用当前框架,FBO就不需要重新绘制,FBO可以具有任何尺寸,并且在用于纹理时非常快速,因为您不需要使用它一个glCopyTexImage。你可以创建许多FBO,并用glBindFramebufferEXT在它们之间切换(0绑定你习惯的窗口的帧缓冲区)。 – charstar 2009-11-15 02:36:48