DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3D9 CheckDeviceFormat [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
표면의 포맷이, 지정한 리소스 타입으로서 이용할 수 있을지 어떨지, 및 이 어댑터를 사용하는 장치로 텍스처, 스텐실 버퍼, 렌더링 타겟 중 하나, 또는 이것들 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] 표면에 대해서 요구하는 사용 방법 옵션. 사용 방법 옵션은,D3DUSAGE 및 D3DUSAGE_QUERY 정수의 임의의 편성이다 (CheckDeviceFormat 에 대해서는 D3DUSAGE 정수의 서브 세트만이 유효. 「D3DUSAGE」에 있는 표를 참조할것).
- RType
- [in] 문의 대상의 포맷으로 사용하는 것을 요구하는 리소스 타입. D3DRESOURCETYPE 의 멤버.
- CheckFormat
- [in] Usage 로 지정한 방법으로 사용하는 표면의 포맷을 나타낸다. D3DFORMAT 의 멤버.
반환값
포맷이, 요구된 사용 방법에 대해, 지정된 장치와 호환성이 있는 경우, 이 메서드는 D3D_OK 를 돌려준다.
Adapter 가 시스템의 디스플레이 어댑터의 수이상의 경우, 또는 DeviceType 가 지원되지 않은 경우, 이 메서드는 D3DERR_INVALIDCALL 를 돌려준다. 포맷이 이 사용 방법에서는 장치로 받아들여지지 않는 경우, 이 메서드는 D3DERR_NOTAVAILABLE 를 돌려준다.
주의
애플리케이션은,IDirect3D9::CheckDeviceFormat 에 D3DUSAGE_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 를 돌려준다.