霧色 (Direct3D 9)
圖元和頂點霧的霧色都是透過D3DRS_FOGCOLOR轉譯狀態來設定。 轉譯狀態值可以是任何 RGB 色彩,指定為 RGBA 色彩。 會忽略 Alpha 元件。
下列C++範例會將霧色設定為白色。
/* For this example, the d3dDevice variable is
* a valid pointer to an IDirect3DDevice9 interface.
*/
HRESULT hr;
hr = d3dDevice->SetRenderState(
D3DRS_FOGCOLOR,
0x00FFFFFF); // Highest 8 bits are not used.
if(FAILED(hr))
return hr;
霧會由固定函式管線和可程式化管線以不同的方式套用。
- 如果驅動程式支援D3DPMISCCAPS_FOGANDSPECULARALPHA:
- 如果使用固定函式管線並設定D3DRS_FOGCOLOR,v1.w (在像素著色器中)等於霧轉譯日期中設定的值。
- 如果使用可程式化管線,則 v1.w (在圖元著色器中)等於 0,即使 oD1.w 明確寫入頂點著色器也一樣。
- 如果驅動程式不支援D3DPMISCCAPS_FOGANDSPECULARALPHA:
- 如果使用固定函式管線並設定D3DRS_FOGCOLOR,則 v1.w (在圖元著色器中) 等於在霧轉譯日期中設定的值。
- 如果 oFog 是以頂點著色器明確撰寫,v1.w (在像素著色器中)等於 oFog,限制在 0 到 1 之間。
- 如果上述兩個案例都未套用,則 v1.w (在圖元著色器中) 等於 0,即使 oD1.w 是以頂點著色器明確寫入也一樣。
如需詳細資訊,請參閱 D3DPMISCCAPS。
相關主題