DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3D9 CheckDeviceFormat   [목차열람] [주소복사] [슬롯비우기]
IDirect3D9::CheckDeviceFormat 메서드
 
Microsoft DirectX 9.0

IDirect3D9::CheckDeviceFormat 메서드


표면의 포맷이, 지정한 리소스 타입으로서 이용할 수 있을지 어떨지, 및 이 어댑터를 사용하는 장치로 텍스처, 스텐실 버퍼, 렌더링 타겟 중 하나, 또는 이것들 3 개의 편성으로서 사용할 수 있을지 어떨지를 조사한다.

구문

HRESULT CheckDeviceFormat(      

    UINT Adapter,     D3DDEVTYPE DeviceType,     D3DFORMAT AdapterFormat,     DWORD Usage,     D3DRESOURCETYPE RType,     D3DFORMAT CheckFormat );

파라미터

Adapter
[in] 문의 대상의 디스플레이 어댑터를 나타내는 서수. D3DADAPTER_DEFAULT 는 항상 1차 디스플레이 어댑터이다. 이 값이 시스템의 디스플레이 어댑터의 수이상의 경우, 이 메서드는 D3DERR_INVALIDCALL 를 돌려준다.
DeviceType
[in] D3DDEVTYPE 열거형의 멤버. 장치 타입을 식별한다.
AdapterFormat
[in] D3DFORMAT 열거형의 멤버. 어댑터로 사용되는 디스플레이 모드의 포맷을 식별한다.
Usage
[in] 표면에 대해서 요구하는 사용 방법 옵션. 사용 방법 옵션은,D3DUSAGED3DUSAGE_QUERY 정수의 임의의 편성이다 (CheckDeviceFormat 에 대해서는 D3DUSAGE 정수의 서브 세트만이 유효. 「D3DUSAGE」에 있는 표를 참조할것).
RType
[in] 문의 대상의 포맷으로 사용하는 것을 요구하는 리소스 타입. D3DRESOURCETYPE 의 멤버.
CheckFormat
[in] Usage 로 지정한 방법으로 사용하는 표면의 포맷을 나타낸다. D3DFORMAT 의 멤버.

반환값

포맷이, 요구된 사용 방법에 대해, 지정된 장치와 호환성이 있는 경우, 이 메서드는 D3D_OK 를 돌려준다.

Adapter 가 시스템의 디스플레이 어댑터의 수이상의 경우, 또는 DeviceType 가 지원되지 않은 경우, 이 메서드는 D3DERR_INVALIDCALL 를 돌려준다. 포맷이 이 사용 방법에서는 장치로 받아들여지지 않는 경우, 이 메서드는 D3DERR_NOTAVAILABLE 를 돌려준다.



주의

애플리케이션은,IDirect3D9::CheckDeviceFormatD3DUSAGE_AUTOGENMIPMAP 를 지정해 호출해, 특정의 포맷에 대한 자동 생성의 지원을 검출할 수 있다. 밉맵 자동 생성의 요구는, 힌트라고 보여진다. 따라서, 이 메서드는 DDOK_NOAUTOGEN 를 돌려줄 수가 있다. 밉맵의 생성에만 실패했을 경우, 이 값은 유효한 성공 코드이다. 밉맵의 자동 생성이 실패했을 경우, 애플리케이션은 밉맵화되지 않은 텍스처를 받는다. 더 자세한 정보는, 「밉맵의 자동 생성」을 참조할것.

오프 스크린의 단순한 플레인 표면 포맷에 대해 조사하려면 ,Usage = 0 및 RType = RTYPE_SURFACE 를 지정한다.

IDirect3D9::CheckDeviceFormat 의 일반적인 용도는, 특정의 스텐실 표면 포맷이 존재할지 어떨지를 확인하는 것이다. 열거 처리의 더 자세한 정보는, 「장치의 선택」을 참조할것. 다음 샘플 코드는,IDirect3D9::CheckDeviceFormat 를 사용해 스텐실 포맷의 유무를 확인하는 방법을 나타내고 있다.

BOOL IsDepthFormatExisting( D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat ) 
{
    HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                          D3DDEVTYPE_HAL,
                                          AdapterFormat,
                                          D3DUSAGE_DEPTHSTENCIL,
                                          D3DRTYPE_SURFACE,
                                          CheckFormat);

    return SUCCEEDED( hr );
}

위에의 호출은, 시스템에 CheckFormat 가 존재하지 않는 경우는 FALSE 를 돌려준다.

IDirect3D9::CheckDeviceFormat 마시자 1 개의 일반적인 용도는, 특정의 표면 포맷에 존재하는 텍스처를, 현재의 디스플레이 모드로 렌더링 할 수 있을지 어떨지를 확인하는 것이다. 다음 샘플 코드는,IDirect3D9::CheckDeviceFormat 를 사용해, 텍스처 포맷이 특정의 백 버퍼 포맷과 호환성이 있을지 어떨지를 확인하는 방법을 나타내고 있다.

BOOL IsTextureFormatOk( D3DFORMAT TextureFormat, D3DFORMAT AdapterFormat ) 
{
    HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                          D3DDEVTYPE_HAL,
                                          AdapterFormat,
                                          0,
                                          D3DRTYPE_TEXTURE,
                                          CheckFormat);

    return SUCCEEDED( hr );
}

위에의 호출은, 어댑터 표면 포맷이 AdapterFormat 일 때,CheckFormat 를 사용해 텍스처를 렌더링 할 수 없는 경우, FALSE 를 돌려준다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP