Condividi tramite


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.

  1. 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.
  2. 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.

Tipi di nebbia