2017-10-21 169 views
0

我正在嘗試從Blender導出Collada格式,並且使用更復雜的對象和紋理,我在索引「p」部分注意到它會列出相同的頂點信息,但使用不同的法線和uv座標。爲什麼3D模型具有不同uv座標的重複頂點位置

我覺得兩個主要問題非常重要。

1:爲什麼?不應該只有1個頂點位置和1個UV座標的位置?

2(所有最重要的問題):如果這個頂點信息不按順序放入頂點着色器會發生什麼?例如,索引1頂點和索引10頂點共享相同的位置,但具有不同的法線和UV座標。如果指數10先走,然後指數1?反之亦然,這是否會改變Pixel Shader內部的任何內容?這是如何影響管道的其餘部分的?

謝謝!

回答

1

頂點由定義它的所有信息的組合定義。所以你的頂點是五維的:(x,y,z,u,v)。對於任何兩個頂點,如果u1!= u2或v1!= v2,它們不是同一個頂點。如果你想說「頂點是位置A加紋理位置B加上普通的C + ...」,固定管道GPU不支持這種額外的間接性,並且它還不是標準的與可編程圖形處理器間接尋址,因爲它通常相當於在內存帶寬上花費的比在節省上更多。你可以,但人們通常不會。

頂點着色器沒有關於它正在處理的頂點落在排序中的概念;只要幾何管道保持跟蹤,就不會出現問題。

+0

很好的答案,但問題1呢? – Mike5050

+0

GPU與「交錯頂點數據」一起工作,這意味着所有的頂點數據都被打包到由格式和步幅定義的相同塊中。如果您想要使用不同的法線,UV,骨骼指數或任何其他每個頂點數據都具有相同的位置(也稱爲「分割」),則必須重複該位置。 GPU使用「結構數組」,而不是「數組結構」。即使在使用多個頂點緩衝區流時,您也只有每個頂點的所有緩衝區都有一個索引 –

+0

正確。我對問題1的回答是:沒有頂點被重複。頂點(x,y,z,u1,v1)和頂點(x,y,z,u2,v2)是不同的頂點,因爲它們具有不同的(u,v)s。 – Tommy

相關問題