Цвет тумана (Direct3D 9)
Цвет тумана для пикселя и тумана вершин задается через состояние D3DRS_FOGCOLOR отрисовки. Значения состояния отрисовки могут быть любого цвета RGB, указанного в качестве цвета RGBA. Альфа-компонент игнорируется.
В следующем примере 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, версия 1.w (в пиксельном шейдере) равна значению, заданному в туманном отрисовке.
- Если используется программируемый конвейер, версия 1.w (в пиксельном шейдере) равна 0, даже если oD1.w явно записан в вершинном шейдере.
- Если драйвер НЕ поддерживает D3DPMISCCAPS_FOGANDSPECULARALPHA:
- Если используется конвейер фиксированной функции и задан D3DRS_FOGCOLOR, то v1.w (в пиксельном шейдере) равно значению, заданному в туманном отрисовке.
- Если oFog явно записан в вершинном шейдере, версия 1.w (в пиксельном шейдере) равна oFog и зажата в диапазоне от 0 до 1.
- Если ни тот из указанных выше вариантов не применяется, версия 1.w (в пиксельном шейдере) равна 0, даже если oD1.w явно написан в вершинном шейдере.
Дополнительные сведения см. в разделе D3DPMISCCAPS.
Связанные темы