다음을 통해 공유


IDirect3D9::CheckDeviceFormat 메서드(d3d9.h)

표면 형식을 지정된 리소스 유형으로 사용할 수 있고 이 어댑터를 나타내는 디바이스에서 텍스처, 깊이 스텐실 버퍼 또는 렌더링 대상 또는 세 가지 조합으로 사용할 수 있는지 여부를 결정합니다.

구문

HRESULT CheckDeviceFormat(
  [in] UINT            Adapter,
  [in] D3DDEVTYPE      DeviceType,
  [in] D3DFORMAT       AdapterFormat,
  [in] DWORD           Usage,
  [in] D3DRESOURCETYPE RType,
  [in] D3DFORMAT       CheckFormat
);

매개 변수

[in] Adapter

형식: UINT

쿼리할 디스플레이 어댑터를 나타내는 서수입니다. D3DADAPTER_DEFAULT 항상 기본 디스플레이 어댑터입니다. 이 메서드는 이 값이 시스템의 디스플레이 어댑터 수와 같거나 초과할 때 D3DERR_INVALIDCALL 반환합니다.

[in] DeviceType

형식: D3DDEVTYPE

디바이스 유형을 식별하는 D3DDEVTYPE 열거형 형식의 멤버입니다.

[in] AdapterFormat

형식: D3DFORMAT

어댑터가 배치될 디스플레이 모드의 형식을 식별하는 D3DFORMAT 열거형 형식의 멤버입니다.

[in] Usage

형식: DWORD

Surface에 대해 요청된 사용 옵션입니다. 사용 옵션은 D3DUSAGED3DUSAGE_QUERY 상수의 조합입니다(D3DUSAGE 상수의 하위 집합만 CheckDeviceFormat에 유효합니다. D3DUSAGE 페이지의 표 참조).

[in] RType

형식: D3DRESOURCETYPE

쿼리된 형식으로 사용하기 위해 요청된 리소스 유형입니다. D3DRESOURCETYPE 멤버입니다.

[in] CheckFormat

형식: D3DFORMAT

사용량에 정의된 대로 사용할 수 있는 표면의 형식입니다. D3DFORMAT 멤버입니다.

반환 값

형식: HRESULT

형식이 요청된 사용에 대해 지정된 디바이스와 호환되는 경우 이 메서드는 D3D_OK 반환합니다.

어댑터가 시스템의 디스플레이 어댑터 수와 같거나 초과하거나 DeviceType이 지원되지 않는 경우 D3DERR_INVALIDCALL 반환됩니다.

이 사용에 대해 디바이스에서 형식을 사용할 수 없는 경우 D3DERR_NOTAVAILABLE 반환됩니다.

설명

다음은 CheckDeviceFormat을 사용하여 하드웨어 지원을 위해 검사 몇 가지 예입니다.

  • 오프 스크린 일반 표면 형식 - 사용량 = 0 및 RType = D3DRTYPE_SURFACE 지정합니다.
  • 깊이 스텐실 형식 - 깊이 스텐실 형식으로 전달된 에 대한 다음 코드 조각 테스트입니다.
    
    BOOL IsDepthFormatExisting( D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              D3DUSAGE_DEPTHSTENCIL,
                                              D3DRTYPE_SURFACE,
                                              DepthFormat);
        
        return SUCCEEDED( hr );
    }
    

    열거형 프로세스에 대한 자세한 내용은 디바이스 선택(Direct3D 9) 을 참조하세요.

  • 이 텍스처를 특정 형식으로 렌더링할 수 있나요 - 현재 표시 모드를 고려할 때 이 예제에서는 텍스처 형식이 특정 백 버퍼 형식과 호환되는지 확인하는 방법을 보여 주었습니다.
    
    BOOL IsTextureFormatOk( D3DFORMAT TextureFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              0,
                                              D3DRTYPE_TEXTURE,
                                              TextureFormat);
        
        return SUCCEEDED( hr );
    }
    
  • 픽셀 셰이더에서 알파 혼합 - 사용량을 D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING 설정합니다. 모든 부동 소수점 렌더링 대상에 대해 실패할 것으로 예상합니다.
  • Mipmap 자동 생성 - 사용량을 D3DUSAGE_AUTOGENMIPMAP 설정합니다. Mipmap 자동 생성에 실패하면 애플리케이션은 mipmapped가 아닌 텍스처를 가져옵니다. 이 메서드를 호출하는 것은 힌트로 간주되므로 이 메서드는 mipmap 생성만 실패하는 경우 D3DOK_NOAUTOGEN(유효한 성공 코드)를 반환할 수 있습니다. Mipmap 생성에 대한 자세한 내용은 Mipmap 자동 생성(Direct3D 9)을 참조하세요.
Direct3D 9에서 Direct3D 10으로 코드를 마이그레이션할 때 CheckDeviceFormat에 해당하는 Direct3D 10은 CheckFormatSupport입니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 d3d9.h(D3D9.h 포함)
라이브러리 D3D9.lib

추가 정보

IDirect3D9