我目前有兩個着色器,一個處理着色器(頂點和像素) - 計算光照和投影變換。然後將其渲染爲紋理。然後我有我的第二個着色器,一個後處理着色器,它讀取渲染的紋理並將其輸出到屏幕(同樣是頂點着色器和像素着色器)。交換Direct3D 11着色器時管理狀態的好方法是什麼?
一旦我將場景渲染爲紋理,我將立即上下文的頂點和像素着色器與後處理交換,但我不知道如何管理狀態(例如我的紋理參數和常量緩衝區) 。交換着色器,然後每幀兩次手動重置常量緩衝區和紋理看起來非常浪費,並且首先會破壞常量緩衝區的位置,但據我所知,您無法在着色器對象上設置數據,它必須傳遞給上下文。
其他人建議在交換着色器時使用相當簡單高效的方式管理變量和紋理。
噢,我看到了,我做了一個錯誤的假設,即每次交換着色器時都必須重新傳遞數據,而如果將它們存儲在不同的寄存器中,則只要需要,它們就會保留在那裏。非常感謝 – 2011-03-14 16:43:31