2009-01-16 40 views
2

我正在XNA的Xbox 360遊戲中工作。遊戲具有三維地形,其中包含通過鏈接圖形連接的靜態對象集合。我想繪製連接對象的鏈接,作爲投影到地形上的線條。我也希望能夠改變鏈接的顏色等等,但是我不需要移動鏈接。但是,我遇到了使這項工作正確高效的問題。如何將線條動態投影到3D地形上?

有些想法我已經是:

1)渲染四邊形到一個單獨的渲染目標,並使用紋理的地形之上的覆蓋。我目前正在使用這種方法,僅爲相機當前可見的區域生成紋理,以最大限度地減少混疊。不過,我仍然遇到別名問題 - 線條看起來很棘手,遊戲在移動攝像頭時經常出現 編輯:所有時間都在跳,我只是沒有Xbox上的幀速率計數器,所以我只是當事情發生時注意它。

2)提前將線條烘烤成紋理。這可能會提高性能,但會使鋸齒問題變得更糟。此外,它不會讓我動態地改變線路的屬性,而不需要大量的電源。

3)通過細分地形上的線四邊形來製作與地形形狀相匹配的幾何圖形。這個選項似乎可以幫助,但我不確定是否應該花時間嘗試一下,如果有更簡單的方法。

有沒有一些神奇的方式來做到這一點,我沒有想到?正確地完成這些路徑之一是否是最好的?

+0

我沒有答案,但這讓我想到線性代數。也許你可以做一些矩陣變換?對不起,它可能沒有幫助。 – jcollum 2009-01-16 01:57:40

+0

與靜態執行相同的方式,但更多的是在程序運行後。 :-) – paxdiablo 2009-01-16 03:14:17

回答

1

你的1)是一個相當好的解決方案。您可以通過過濾來減少抖動 - 首先,確保在使用疊加層時使用雙線性採樣。然後,嘗試在繪製之後但在使用之前模糊疊加層;如果你選擇了一個合適的過濾器,它將消除混疊。

如果渲染疊加層需要太多時間,請嘗試降低其分辨率。如果沒有抗混疊濾波器,那隻會讓它變得很麻煩,但是如果濾波器很好,它甚至可能會更好。

我不知道爲什麼遊戲只有在移動相機時才突然出現。記住,你應該有一個獨立的覆蓋照相機 - 正交,並指向地形。

-2

XNA是否有陰影庫?如果是這樣,你可以假裝線條是陰影。