관련 색인이 없습니다.
알파 실험 스테이트
 
Microsoft DirectX 9.0

알파 실험 스테이트


C++ 애플리케이션에서는, 알파 실험을 사용해, 언제 픽셀을 렌더링 타겟 표면에 기입하는지를 제어한다. D3DRENDERSTATETYPE 열거형 렌더링 스테이트를 사용하는 것으로, 애플리케이션에서는, 알파 테스트 함수에 근거해 각 픽셀을 테스트할 수 있도록(듯이) 현재의 Microsoft® Direct3D® 장치를 설정한다. 테스트가 성공하면 픽셀이 표면에 써진다. 테스트가 실패 하면, Direct3D 는 픽셀을 무시한다. 알파 테스트 함수는,D3DRS_ALPHAFUNC 렌더링 스테이트로 선택한다. D3DRS_ALPHAREF 렌더링 스테이트를 사용하는 것으로, 애플리케이션에서는, 비교하는 모든 픽셀에 참조 알파값을 설정한다.

알파 실험은, 보통, 투명하게 가까운 개체를 래스터화할 때의 퍼포먼스를 개선하기 위해서 사용한다. 래스터화하는 컬러 데이터가 지정의 픽셀 (D3DPCMPCAPS_GREATEREQUAL)보다 불투명하게 가까운 경우, 픽셀이 써진다. 그렇지 않은 경우는, 래스터라이저는 픽셀을 무시해, 2 색의 블렌드에 필요한 처리를 생략 한다. 다음 샘플 코드는, 지정된 비교 함수가 지원 되고 있는지를 조사하고 있다. 지원 되고 있는 경우는, 렌더링의 퍼포먼스 개선에 필요한 비교 함수의 파라미터를 설정한다.

// This code example assumes that pCaps is a
// D3DCAPS9 structure that was filled with a 
// previous call to IDirect3D9::GetDeviceCaps.

if (pCaps.AlphaCmpCaps & D3DPCMPCAPS_GREATEREQUAL)
{
    dev->SetRenderState(D3DRS_ALPHAREF, (DWORD) 0x00000001);
    dev->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE); 
    dev->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
}

// If the comparison is not supported, render anyway.  
// The only drawback is no performance gain.

모든 하드웨어가 알파 실험 기능을 지원 하고 있는 것은 아니다. 장치 기능을 조사하려면 ,IDirect3D9::GetDeviceCaps 메서드를 호출한다. 장치 기능을 취득한 후, 사용하는 비교 함수의 관련하는 D3DCAPS9 구조체의 AlphaCmpCaps 멤버를 조사한다. AlphaCmpCaps 멤버가 D3DPCMPCAPS_ALWAYS 능력만, 또는 D3DPCMPCAPS_NEVER 능력만을 포함하고 있는 경우, 드라이버는 알파 테스트를 지원 하고 있지 않다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP