迷雾颜色 (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 () 等于在 fog renderstate 中设置的值。
- 如果使用可编程管道,则像素着色器中的 v1.w () 等于 0,即使 oD1.w 显式写入顶点着色器也是如此。
- 如果驱动程序不支持D3DPMISCCAPS_FOGANDSPECULARALPHA:
- 如果使用固定函数管道并设置了D3DRS_FOGCOLOR,则像素着色器中的 v1.w () 等于在 fog renderstate 中设置的值。
- 如果在顶点着色器中显式写入 oFog,则像素着色器中的 v1.w () 等于 oFog,固定在 0 和 1 之间。
- 如果上述两种情况都不适用,则像素着色器中的 v1.w () 等于 0,即使 oD1.w 是在顶点着色器中显式编写的也是如此。
有关详细信息,请参阅 D3DPMISCCAPS。
相关主题