迷雾颜色 (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;

固定函数管道和可编程管道以不同的方式应用迷雾。

  1. 如果驱动程序支持D3DPMISCCAPS_FOGANDSPECULARALPHA:
    • 如果使用固定函数管道并设置了D3DRS_FOGCOLOR,则像素着色器中的 v1.w () 等于在 fog renderstate 中设置的值。
    • 如果使用可编程管道,则像素着色器中的 v1.w () 等于 0,即使 oD1.w 显式写入顶点着色器也是如此。
  2. 如果驱动程序不支持D3DPMISCCAPS_FOGANDSPECULARALPHA:
    • 如果使用固定函数管道并设置了D3DRS_FOGCOLOR,则像素着色器中的 v1.w () 等于在 fog renderstate 中设置的值。
    • 如果在顶点着色器中显式写入 oFog,则像素着色器中的 v1.w () 等于 oFog,固定在 0 和 1 之间。
    • 如果上述两种情况都不适用,则像素着色器中的 v1.w () 等于 0,即使 oD1.w 是在顶点着色器中显式编写的也是如此。

有关详细信息,请参阅 D3DPMISCCAPS

迷雾类型