DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3D9 CheckDeviceType [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
어댑터로 하드웨어 가속화 장치 타입이 사용 가능한가 어떤가를 검증한다.
구문
HRESULT CheckDeviceType(
UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT DisplayFormat, D3DFORMAT BackBufferFormat, BOOL Windowed );
파라미터
- Adapter
- [in] 열거하는 디스플레이 어댑터를 나타내는 서수. D3DADAPTER_DEFAULT 는 항상 1차 디스플레이 어댑터이다. 이 값이 시스템의 디스플레이 어댑터의 수이상의 경우, 이 메서드는 D3DERR_INVALIDCALL 를 돌려준다.
- DeviceType
- [in] D3DDEVTYPE 열거형의 멤버. 체크하는 장치 타입을 나타낸다.
- DisplayFormat
- [in] D3DFORMAT 열거형의 멤버. 장치 타입을 체크하는 어댑터 디스플레이 모드의 포맷을 나타낸다. 예를 들어, 장치에 따라서는, 픽셀 단위의 16 비트의 모드에서만 동작하는 것도 있다.
- BackBufferFormat
- [in] 백 버퍼 포맷. 포맷의 더 자세한 정보는, 「D3DFORMAT 」를 참조할것. 이 값은, 렌더링 타겟 포맷의 1 개가 아니면 안된다. 현재의 포맷은,IDirect3DDevice9::GetDisplayMode 를 사용해 취득할 수 있다. 윈도우 애플리케이션에서는, 하드웨어가 색변환을 지원 하고 있는 경우, 백 버퍼 포맷이 디스플레이 모드 포맷과 반드시 일치할 필요는 없다. 사용 가능한 백 버퍼 포맷세트는 제한되고 있지만, 런타임은 임의의 유효한 백 버퍼 포맷을 사용해, 임의의 데스크탑 포맷에 프레젠테이션 할 수 있다. 다만, 장치가 데스크탑 모드로 동작 가능해야 한다고 하는 요건도 있다. 보통, 장치는 픽셀 근처 8 비트의 모드에서는 동작하지 않는다. 풀 스크린 애플리케이션에서는, 색변환을 실행할 수 없다.
D3DFMT_UNKNOWN 는, 윈도우 모드로 사용할 수 있다.
- Windowed
- [in] 장치 타입이 풀 스크린 모드와 윈도우 모드의 어디에서 사용되는지를 나타내는 값. TRUE 를 설정했을 경우, 윈도우 애플리케이션의 문의가 실행된다. 그 이외의 경우는, 이 값에 FALSE 할 필요가 있다.
반환값
이 어댑터로 장치를 사용할 수 있는 경우는,D3D_OK 를 돌려준다.
Adapter 가 시스템의 디스플레이 어댑터의 수이상의 경우는,D3DERR_INVALIDCALL 를 돌려준다. IDirect3D9::CheckDeviceType 가 존재하지 않는 장치를 지정하고 있었을 경우도,D3DERR_INVALIDCALL 를 돌려준다.
요구한 백 버퍼 포맷이 지원되지 않은지, 지정한 포맷으로 하드웨어 가속화를 사용할 수 없는 경우는,D3DERR_NOTAVAILABLE 를 돌려준다.
주의
장치형 하드웨어 추상 계층 (HAL)에는 하드웨어 가속화가 필요하다. 애플리케이션에서는,CheckDeviceType 를 사용해 HAL 장치의 지원에 필요한 하드웨어 및 드라이버가 있을지 어떨지를 확인할 수 있다.
풀 스크린 애플리케이션에서는, 알파 채널을 포함한 DisplayFormat 를 지정해서는 안된다. 이 경우, 호출은 실패한다. 백 버퍼에 알파 채널이 존재해도 괜찮지만, 2 개의 디스플레이 포맷은 다른 모든 면에서 같지 않으면 안 된다. 예를 들어,DisplayFormat 가 D3DFMT_X1R5G5B5 의 경우,BackBufferFormat 의 유효한 값에는 D3DFMT_X1R5G5B5 및 D3DFMT_A1R5G5B5 는 포함되지만, D3DFMT_R5G6B5 는 제외된다.
다음 샘플 코드는,CheckDeviceType 를 사용해, 특정의 장치 타입을 그 어댑터로 사용할 수 있을지 어떨지를 확인하는 방법을 나타내고 있다.if(SUCCEEDED(pD3Device->CheckDeviceType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, DisplayFormat, BackBufferFormat, bIsWindowed))) return S_OK; // There is no HAL on this adapter using this render target format. // Try again, using another format.장치가 디폴트의 어댑터상에서, 지정된 표면 포맷으로 사용할 수 있는 경우, 이 코드는 S_OK 를 돌려준다.
IDirect3D9::CheckDeviceType 를 사용해, 디스플레이 포맷과 다른 백 버퍼와의 호환성을 테스트 하면, 적절한 값이 반환된다. 즉, 호출은 장치의 능력을 나타낸다. 요구한 백 버퍼 포맷에 장치가 렌더링 할 수 없는 경우에서도, 호출은 D3DERR_NOTAVAILABLE 를 돌려준다. 장치가 그 포맷에 렌더링 할 수 있지만, 색변환을 사용한 프레젠테이션을 실행할 수 없는 경우도, 반환값은 D3DERR_NOTAVAILABLE 가 된다. 애플리케이션에서는,IDirect3D9::CheckDeviceFormatConversion 를 호출해 프레젠테이션 자체의 하드웨어 지원을 검출할 수 있다. 색변환을 사용한 프레젠테이션 자체의 소프트웨어 에뮬레이션은 제공되지 않는다.