2009-11-14 44 views
2

所以我有什麼本質上是一場比賽......這場比賽中有地形。我希望能夠創建一個自上而下的視圖小地圖,以便「玩家」可以看到他們要去的地方。我在地形上做了一些陰影等,所以我希望它也能在小地圖上出現。看起來我只需要創建第二臺相機,並以某種方式讓相機的顯示屏顯示在特定的框中。我也想像一面鏡子那樣工作。OpenGL中的地形小地圖?

我正在尋找方法,我可以採取的基本上給我同樣的看法,我目前有,只是自上而下......這似乎是可行的嗎?隨時提問...謝謝!

回答

4

的一種方法是創建具有附渲染緩衝器的FBO(幀緩衝器的對象),渲染你的小地圖到它,然後將FBO綁定到紋理。然後你可以將紋理映射到任何你喜歡的東西,通常是四邊形。您可以爲各種HUD對象執行此操作。這也意味着您不必像主視圖那樣頻繁地重繪HUD /菜單對象的內容;只需要經常更新關聯的緩衝區。對於這種情況,您通常會想要向FBO下采樣(以多邊形計數的方式)您渲染的對象/場景。你要檢查到API中的功能是:

  • glGenFramebuffersEXT
  • glBindFramebufferEXT
  • glGenRenderbuffersEXT
  • glBindRenderbufferEXT
  • glRenderbufferStorageEXT
  • glFrambufferRenderbufferEXT
  • glFrambufferTexture2DEXT
  • glGen erateMipmapEXT

有關使用FBO gamedev.net的說明。另一個潛在的優化是,如果小地圖的內容是靜態的,並且您只是將相機移動到這個靜態視圖上(真的只是一張地圖)。您可以渲染比實際想要顯示給玩家的地圖更大的一部分地圖,並通過調整其映射到的對象的紋理座標來僞造攝像機。這隻適用於如果你的小地圖是正投影。

+0

使用多個視口也可以工作嗎?我可以渲染多邊形到幀緩衝區嗎?很明顯,我很喜歡圖形編程哈哈。 – Polaris878 2009-11-14 19:25:05

+1

是的,您可以使用與您在窗口的幀緩衝區中正常繪製的方式完全相同的方式繪製FBO(與使用前緩衝區交換之前渲染到後臺緩衝區相同)。你可以在每個FBO中使用不同的gluPerspective/gluLookAt。好處是,如果您不需要使用當前框架,FBO就不需要重新繪製,FBO可以具有任何尺寸,並且在用於紋理時非常快速,因爲您不需要使用它一個glCopyTexImage。你可以創建許多FBO,並用glBindFramebufferEXT在它們之間切換(0綁定你習慣的窗口的幀緩衝區)。 – charstar 2009-11-15 02:36:48

1

好了,我沒有回答您的具體問題,但它是常見的在遊戲中使用正交的角度從上面的世界渲染的圖像,並使用了小地圖。它至少比運行中的性能密集程度低。要做到這一點