Couleur de brouillard (Direct3D 9)
La couleur de brouillard pour le brouillard de pixels et de vertex est définie via l’état de rendu D3DRS_FOGCOLOR. Les valeurs d’état de rendu peuvent être n’importe quelle couleur RVB, spécifiée en tant que couleur RVBA. Le composant alpha est ignoré.
L’exemple C++ suivant définit la couleur de brouillard sur blanc.
/* 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;
Le brouillard est appliqué différemment par le pipeline de fonction fixe et le pipeline programmable.
- Si le pilote prend en charge D3DPMISCCAPS_FOGANDSPECULARALPHA :
- Si le pipeline de fonction fixe est utilisé et qu’D3DRS_FOGCOLOR est défini, v1.w (dans le nuanceur de pixels) est égal à la valeur définie dans l’état de rendu de brouillard.
- Si le pipeline programmable est utilisé, v1.w (dans le nuanceur de pixels) est égal à 0, même si oD1.w est explicitement écrit dans un nuanceur de vertex.
- Si le pilote ne prend PAS en charge D3DPMISCCAPS_FOGANDSPECULARALPHA :
- Si le pipeline de fonction fixe est utilisé et D3DRS_FOGCOLOR est défini, la version 1.w (dans le nuanceur de pixels) est égale à la valeur définie dans l’état de rendu de brouillard.
- Si oFog est explicitement écrit dans un nuanceur de vertex, v1.w (dans le nuanceur de pixels) est égal à oFog, limité entre 0 et 1.
- Si aucun des deux cas ci-dessus ne s’applique, v1.w (dans le nuanceur de pixels) est égal à 0, même si oD1.w est explicitement écrit dans un nuanceur de vertex.
Pour plus d’informations, consultez D3DPMISCCAPS.
Rubriques connexes