2010-02-21 134 views
1

我試圖編寫一個3DS Loader,它有一個OpenGL渲染實現用於我的通用渲染系統。Directx9索引緩衝區和多個流

這裏的問題是我有頂點索引到一個數組和紋理座標索引到另一個。我不想通過檢查座標和紋理座標的每個頂點組合來生成一組新的索引和原始頂點,那麼如何以最佳方式在directx中的緩衝區中指定兩個數組?

我想要的是有3個頂點緩衝區,一個用於頂點,一個用於紋理座標,另一個用於頂點法線。然後我會有三個索引緩衝區。我不知道我會怎麼做。

我在DirectX9的工作和C++

回答

3

的事情是儘量在2個頂點具有相同的位置和不同的TEX座標(或不同的任何頂點元素)的顯卡而言則它們是不同的頂點。無論你在OpenGL下做什麼,它們都將被存儲在卡上,位置/ tex座標被複制(驅動程序將隱式擴展頂點)。 DirectX強迫你這樣做。

多個流略有不同,但擴展到相同的東西。即你只有一個索引值進入兩個流。

因此,最佳情況下,您需要將兩個列表擴展爲一個大列表並適當地設置索引的單個列表。