안개 색(Direct3D 9)

픽셀 및 꼭짓점 안개 모두에 대한 안개 색은 D3DRS_FOGCOLOR 렌더링 상태를 통해 설정됩니다. 렌더링 상태 값은 RGBA 색으로 지정된 모든 RGB 색일 수 있습니다. 알파 구성 요소는 무시됩니다.

다음 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;

안개는 고정 함수 파이프라인 및 프로그래밍 가능한 파이프라인에 의해 다르게 적용됩니다.

  1. 드라이버가 D3DPMISCCAPS_FOGANDSPECULARALPHA 지원하는 경우:
    • 고정 함수 파이프라인이 사용되고 D3DRS_FOGCOLOR 설정된 경우 v1.w(픽셀 셰이더)는 안개 renderstate에 설정된 값과 같습니다.
    • 프로그래밍 가능한 파이프라인을 사용하는 경우 oD1.w가 꼭짓점 셰이더에 명시적으로 기록되더라도 v1.w(픽셀 셰이더)는 0과 같습니다.
  2. 드라이버가 D3DPMISCCAPS_FOGANDSPECULARALPHA 지원하지 않는 경우:
    • 고정 함수 파이프라인이 사용되고 D3DRS_FOGCOLOR 설정된 경우 v1.w(픽셀 셰이더)는 fog renderstate에서 설정된 값과 같습니다.
    • oFog가 꼭짓점 셰이더로 명시적으로 작성된 경우 v1.w(픽셀 셰이더)는 oFog와 0에서 1 사이로 고정됩니다.
    • 위의 두 경우 중 어느 것도 적용되지 않으면 oD1.w가 꼭짓점 셰이더에 명시적으로 기록되더라도 v1.w(픽셀 셰이더)는 0과 같습니다.

자세한 내용은 D3DPMISCCAPS를 참조하세요.

안개 유형