2011-08-31 80 views
2

我真的很討厭問什麼感覺像一個完全愚蠢的問題,但我缺乏正式的訓練,導致我把這個問題放在那裏。OpenGL,一次繪製多少?

我越來越對目前的遊戲項目的地步,使遊戲的主要區域/水平接近並有一些東西我不能確定,基本上是與擔憂實際上是多少看到與多少扔進繪圖命令。

這可能不是什麼都會做,但在一個簡單的方法,我會提出這些例子解釋它的緣故。我目前正在使用OpenGL ES 1.1。

說我有一個性格和觀點是第三人,接近角色。我有一個房間大級別區域等做我:

  1. 扔的整體水平進入繪圖命令和承擔的裁剪和深度緩衝做修整了什麼沒見過/渲染到的工作屏幕?

  2. 打破面積,只繪製部分,可能可能被看到?

  3. 別的東西更有效率?

回答

3

如果你是一個受限制的環境中,像什麼在FPS遊戲中是常見的,那麼研究門阻斷。

這是一個熱門話題,書籍如3D Math Primer for Graphics and Game DevelopmentReal-Time Rendering有很好的技術概述。其他文本可以提供有關該主題的更詳細/詳盡的解讀。

BSP樹也可以用於這種類型的設置。

如果您正在製作一個類似於RPG中的開放大世界,那麼請使用四/十進制樹進行研究。

1

這取決於您的驅動程序如何優化渲染。您將不得不嘗試並衡量性能。

如果性能不夠好,這裏有一些提示:

  • 切整場比賽成區域這不可能看到對方(如果你有在地下,內有是沒辦法看到表面的,所以你可以把它切掉)。你只需要一種方法來保持兩個區域同步的過渡區域(斜坡到地下區域)。

  • 多數司機都在使用忽視的octrees玩家背後部分還不錯。如果這不適合你,請創建自己的八叉樹來優化傳遞給渲染器的模型。

  • 幾何往往是沒有問題的,紋理花費的時間(大量內存讀取)。許多驅動程序允許使用具有不同分辨率的紋理(mipmapping)來加速此過程。

2

理想情況下,您只需要向GPU發送僅可見的頂點。別的,你會失去表現。另一方面,試圖做一個完美的剔除可能需要太多的CPU週期。你必須在一些補丁中打破這個區域,並試着只畫出可以看到的東西。如果可能的話,儘量做到儘可能準確,但不要在CPU上花太多時間。

始終輪廓和檢查:)