Colore nebbia (Direct3D 9)
Il colore della nebbia per pixel e nebbia del vertice viene impostato attraverso lo stato di rendering D3DRS_FOGCOLOR. I valori dello stato di rendering possono essere qualsiasi colore RGB, specificato come colore RGBA. Il componente alfa viene ignorato.
L'esempio C++ seguente imposta il colore della nebbia su bianco.
/* 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;
La nebbia viene applicata in modo diverso dalla pipeline fissa della funzione e dalla pipeline programmabile.
- Se il driver supporta D3DPMISCCAPS_FOGANDSPECULARALPHA:
- Se la pipeline della funzione fissa viene usata e D3DRS_FOGCOLOR è impostata, v1.w (nel pixel shader) equivale al valore impostato nel rendering della nebbia.
- Se viene usata la pipeline programmabile, v1.w (nel pixel shader) è uguale a 0, anche se oD1.w viene scritto in modo esplicito in un vertex shader.
- Se il driver non supporta D3DPMISCCAPS_FOGANDSPECULARALPHA:
- Se viene usata la pipeline della funzione fissa e D3DRS_FOGCOLOR è impostata, v1.w (nel pixel shader) è uguale al valore impostato nel rendering della nebbia.
- Se oFog è scritto in modo esplicito in un vertex shader, v1.w (nel pixel shader) è uguale a oFog, bloccato tra 0 e 1.
- Se nessuno dei due casi precedenti si applica, v1.w (nel pixel shader) è uguale a 0, anche se oD1.w viene scritto in modo esplicito in un vertex shader.
Per altre informazioni, vedere D3DPMISCCAPS.
Argomenti correlati