2010-02-17 91 views
1

在Direct3D10模版讀/寫掩碼是一個字節(從0x00到0xFF)模板緩衝區讀/寫掩碼

在的Direct3D9模版讀/寫掩模是INT(從00000000到0xFFFFFFFF)

現在的問題是:

Direct3D10中的模板讀寫掩碼如何與Direct3D9相關?

Direct3D10 | 0x00FFFFFF或Direct3D10 | 0xFFFFFF00?

而另一個問題:

爲什麼一個的Direct3D9當模板緩衝區可最多8位32位整數? o.O

謝謝。

回答

3

Direct3D10 | 0xFFFFFF00

D3D9中最不重要的位是相關位,文檔用DWORD描述了模板操作,但最終模板緩衝區只存儲單個字節,所以它只是掩碼中最重要的字節。

D3D9使用DWORD的原因是通過SetRenderState設置值,該SetRenderState採用兩個參數,一個D3DRENDERSTATETYPE枚舉指定要更改的狀態以及一個DWORD值。因此,所有呈現狀態都必須使用DWORD值,而不管它們最終如何使用。在某些情況下,這意味着要對浮點數執行reinterpret_cast。對於模板掩模來說,它意味着傳遞一個32位值,其中只有最低有效位8位是真正需要的。 D3D10通過鍵入結構來設置狀態,從而避免了這個問題。

+0

感謝您的回答! – feal87 2010-02-17 21:22:33