2014-02-17 56 views
0

我的問題在理論上很簡單 - 將每個面數據輸入到像素着色器的最佳方法是什麼?如果它通過一個簡單的cbuffer數組注入,我可以使用SV_PrimitiveID值訪問數據。然而,對於任何中等細節的模型來說,每cbuffer 8096浮點數的限制顯然是一個問題。DirectX 11每面數據

有沒有這種方法的替代?可能使用單獨的頂點流?

理想情況下,我會在每個頂點基礎上輸入數據,但數據是每個面,以保存要在紋理數組中查找的每個面使用的紋理的索引。如果每個頂點使用texcoord數據跨越頂點的插值會混淆這個索引,當然?但是,如果無論如何要做到每個頂點,我都是耳朵!

非常感謝您提供的任何幫助。

回答

2

幾何着色器按面運行,可用於將每個多邊形的數據傳遞給像素着色器。

在三角形上使用時,它們將3個頂點作爲輸入並輸出3個頂點,但在此時它們基本上不重複,所以一個頂點在多個三角形之間共享的事實與幾何體無關着色器向前。由於提示不是插值的,所以在這方面沒有問題,索引取自三角形中的「前導」頂點。

Geometry Shaders on MSDN

+0

我現在感覺相當愚蠢的沒有意識到有很多可以通過幾何着色器來完成!感謝您的回答。 – Mrfence97