Nebelfarbe (Direct3D 9)
Die Nebelfarbe für Pixel- und Scheitelpunktnebel wird über den D3DRS_FOGCOLOR Renderzustand festgelegt. Die Renderzustandswerte können eine beliebige RGB-Farbe sein, die als RGBA-Farbe angegeben ist. Die Alphakomponente wird ignoriert.
Im folgenden C++-Beispiel wird die Nebelfarbe auf Weiß festgelegt.
/* 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;
Nebel wird von der festen Funktionspipeline und der programmierbaren Pipeline unterschiedlich angewendet.
- Wenn der Treiber D3DPMISCCAPS_FOGANDSPECULARALPHA unterstützt:
- Wenn die Feste Funktionspipeline verwendet und D3DRS_FOGCOLOR festgelegt ist, entspricht v1.w (im Pixel-Shader) dem wert, der im Nebelrenderstate festgelegt ist.
- Wenn die programmierbare Pipeline verwendet wird, entspricht v1.w (im Pixel-Shader) 0, auch wenn oD1.w explizit in einen Vertex-Shader geschrieben wird.
- Wenn der Treiber nicht D3DPMISCCAPS_FOGANDSPECULARALPHA unterstützt:
- Wenn die feste Funktionspipeline verwendet und D3DRS_FOGCOLOR festgelegt ist, entspricht v1.w (im Pixel-Shader) dem wert, der im Nebelrenderstate festgelegt ist.
- Wenn oFog explizit in einen Vertex-Shader geschrieben wird, entspricht v1.w (im Pixel-Shader) oFog, zwischen 0 und 1 eingeklemmt.
- Wenn keiner der beiden oben genannten Fälle zutrifft, entspricht v1.w (im Pixel-Shader) 0, auch wenn oD1.w explizit in einem Vertex-Shader geschrieben ist.
Weitere Informationen finden Sie unter D3DPMISCCAPS.
Zugehörige Themen