2012-01-21 179 views
2

我想用XNA在3D中創建平鋪地形。我檢查了教程如何做
它(Riemers和Allens)。 Allens教程有我想要達到的確切結果,但是我不確定性能 - 看起來他使用單個四邊形繪製了所有地形的
並使用像素着色器進行處理,這意味着 - 整個地形將分別處理
幀。
目前我正在爲每個圖塊繪製四邊形(Example) - 它只允許繪製
可見圖塊,但這也意味着需要在每個
框架中處理更多的verticies,並調用大量「DrawIndexedPrimitives」 。
我是對的還是Allens的方式更快?有沒有辦法更好地平鋪地形?
謝謝。3d平鋪地形

回答

3

完全取決於您的地形複雜性和大小。通常情況下,您將擁有具有多個四邊形/拼貼的地形拼貼(例如,一個拼貼可以包含4096個三角形),然後替換頂點以獲取所需的地形。儘管如此,每個圖塊都將是一個索引圖元,但是單個繪圖調用將導致大量三角形和大部分地形。進一步考慮這個想法,你可以使距離更遠的瓦片,因此你不會得到太多的細節(尋找基於四叉樹/基於clipmap的地形方法;你會得到這樣的:http://twitpic.com/89y5kn)。或者,如果您可以在頂點着色器中取代,則可以使用實例化來進一步減少繪製調用的數量。根據實例,將UV座標傳遞到您的高地和世界空間位置,然後再次渲染高分辨率圖塊,但是現在您可以結束整個地形的一次繪製調用。

對於一個小遊戲,您可能只想生成幾個高分辨率的貼圖(65k個三角形左右),然後截取它們。這給你一個容易的大地形,仍然可以管理;但這絕對不能太好:)取決於你的需求。

對於紋理貼圖,您還可以使用低分辨率索引紋理,並查找每個像素的圖集,或者只將索引存儲在頂點緩衝區中並插入它們(這很常見:存儲4個權重每個頂點並用它來查找四種不同的紋理。)