2013-12-14 77 views
1

我知道,在DirectX 11可以使用真棒細分功能爲檢測限,但我們知道,DirectX 9的不具有這個功能,我怎麼會去我的3D應用程序/遊戲創建模型的LOD加快步伐?如何在DirectX 9中執行LOD?

在過去的幾天中,DirectX 10或11發佈之前,人們曾經創建過許多相同類型的模型,但只是具有不同的多個計數(即:對於遠處的物體具有非常低的多個計數,非常接近物體的高多數)。

但這樣做將意味着雙倍甚至三倍的型號大小在遊戲中嗎?在DirectX 9中實現LOD還有其他方法嗎?或者說,當談到DirectX 9時,這真的是最好的靈魂嗎?至少有人能指出我對這個問題的正確方向嗎?我可以儘快離開,並對此做更多的研究。

感謝

回答

2

生成多個網格LOD利用網格簡化算法(或手工),你認爲在內存消耗方面可能不是那麼糟糕。與在mipmap中一樣,由於您的簡化網格的頂點少得多,因此它們不應該是遊戲內模型的三倍。如果您暫時不會使用它們,則不必將高分辨率網格保留在視頻內存中。

一種替代,以節省存儲器僅僅是通過丟棄頂點,以簡化的網格。這樣,您可以使用單個頂點緩衝區,併爲每個LOD使用不同的索引緩衝區。您可能會得到質量稍差的LOD網格,但將它們全部保留在內存中的內存開銷將小得多。

如果我沒弄錯,是鑲嵌細分,因此,如果你想有一個粗網格它不會幫你反正(雖然它或許可以幫助檢測限之間插值)。

+0

感謝您的答覆和信息。所以,只是爲了確認,在某種程度上你說這些交換前高後低聚網或從低到高聚網格並不壞主意的? – Danny

+0

是的。如果您嘗試將每個LOD的頂點數量減半,那麼您將始終保持在網格內存使用量的兩倍之內。 – Trillian