DirectX Graphics 프로그래밍 가이드 Direct3D 의 기초지식 장치 장치의 선택 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
애플리케이션은, 지원 되고 있는 Microsoft® Direct3D® 장치 타입을 하드웨어에 조회해 검출할 수 있다. 여기에서는, 디스플레이 어댑터의 열거와 Direct3D 장치의 선택에 관련되는 기본 태스크에 대해 설명한다.
애플리케이션은, 적절한 Direct3D 장치를 선택하기 위한 일련의 태스크를 실행할 필요가 있다. 이하의 스텝은, 풀 스크린 애플리케이션의 태스크이다. 많은 경우, 윈도우 애플리케이션에서는 이러한 스텝의 대부분을 생략 할 수 있다.
D3DPRESENT_PARAMETERS Params; // Initialize values for D3DPRESENT_PARAMETERS members. Params.BackBufferFormat = D3DFMT_X1R5G5B5; if(FAILED(m_pD3D->CheckDeviceType(Device.m_uAdapter, Device.m_DevType, Params.BackBufferFormat, Params.BackBufferFormat, FALSE))) return E_FAIL;
위의 스텝을 완료 하면, 애플리케이션에서는, 처리할 수 있는 디스플레이 모드의 리스트가 완성한다. 마지막 스텝에서는, 장치가 액세스 가능한 메모리에, 필요한 수의 버퍼와 anti-aliasing를 확보할 수 있는 스페이스가 있을지 어떨지를 검증한다. 이 테스트를 필요로 하는 이유는, 모드와 멀티 샘플의 편성에 의해 소비되는 메모리량이, 실제로 검증하는 이외 방법에서는 예측 불가능하기 때문에이다. 게다가 디스플레이 어댑터의 아키텍처에 따라서는, 액세스 가능한 메모리가 장치에 충분히 준비되지 않은 것이 있다. 즉, 풀 스크린 모드로 처리할 때 비디오 메모리 장해가 발생했을 경우는, 애플리케이션이 리포트할 필요가 있다. 일반적으로는, 애플리케이션이 사용자에 제공하는 모드 리스트로부터 풀 스크린 모드를 삭제하는지, 또는 사용하는 백 버퍼의 수를 줄이거나 복잡함이 적은 멀티 샘플 테크닉을 사용해, 메모리 소비량의 삭감을 꾀한다.
윈도우 애플리케이션에서도 같은 일련의 태스크를 실행한다.
D3DPRESENT_PARAMETERS Params; // Initialize values for D3DPRESENT_PARAMETERS members. // Use the current display mode. D3DDISPLAYMODE mode; if(FAILED(m_pD3D->GetAdapterDisplayMode(Device.m_uAdapter , &mode))) return E_FAIL; Params.BackBufferFormat = mode.Format; if(FAILED(m_pD3D->CheckDeviceType(Device.m_uAdapter, Device.m_DevType, Params.BackBufferFormat, Params.BackBufferFormat, FALSE))) return E_FAIL;