Цвет тумана (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 явно написан в шейдере вершин, v1.w (в шейдере пикселей) равен oFog, зажатой от 0 до 1.
- Если ни из двух описанных выше вариантов не применяется, v1.w (в шейдере пикселей) равно 0, даже если oD1.w явно написан в шейдере вершин.
Дополнительные сведения см. в D3DPMISCCAPS.
Связанные разделы