다음을 통해 공유


Direct3D 디바이스(Direct3D 9)

Direct3D 디바이스는 Direct3D의 렌더링 구성 요소입니다. 렌더링 상태를 캡슐화하고 저장합니다. 또한 Direct3D 디바이스는 변환 및 조명 작업을 수행하고 이미지를 표면에 래스터화합니다.

다음 다이어그램과 같이 아키텍처상 Direct3D 디바이스에는 변환 모듈, 조명 모듈 및 래스터화 모듈이 포함되어 있습니다.

direct3d 디바이스 아키텍처다이어그램

Direct3D는 현재 두 가지 유형의 Direct3D 디바이스를 지원합니다.

  • 하드웨어 가속 래스터화 및 하드웨어 및 소프트웨어 꼭짓점 처리가 모두 포함된 음영이 있는 hal 디바이스
  • 참조 디바이스

이러한 디바이스는 두 개의 별도 드라이버로 생각할 수 있습니다. 소프트웨어 및 참조 디바이스는 소프트웨어 드라이버로 표시되며 hal 디바이스는 하드웨어 드라이버로 표시됩니다. 이러한 디바이스를 활용하는 가장 일반적인 방법은 배송 애플리케이션에 hal 디바이스를 사용하고 기능 테스트를 위한 참조 디바이스를 사용하는 것입니다. 이러한 디바이스는 타사에서 특정 디바이스(예: 아직 릴리스되지 않은 개발 하드웨어)를 에뮬레이트하기 위해 제공됩니다.

애플리케이션이 만드는 Direct3D 디바이스는 애플리케이션이 실행 중인 하드웨어의 기능에 해당해야 합니다. Direct3D는 컴퓨터에 설치된 3D 하드웨어에 액세스하거나 소프트웨어에서 3D 하드웨어의 기능을 에뮬레이트하여 렌더링 기능을 제공합니다. 따라서 Direct3D는 하드웨어 액세스 및 소프트웨어 에뮬레이션을 위한 디바이스를 제공합니다.

하드웨어 가속 디바이스는 소프트웨어 디바이스보다 훨씬 더 나은 성능을 제공합니다. hal 디바이스 유형은 모든 Direct3D 지원 그래픽 어댑터에서 사용할 수 있습니다. 대부분의 경우 애플리케이션은 하드웨어 가속이 있고 소프트웨어 에뮬레이션을 사용하여 하위 엔드 컴퓨터를 수용하는 컴퓨터를 대상으로 합니다.

참조 디바이스를 제외하고 소프트웨어 디바이스가 항상 하드웨어 디바이스와 동일한 기능을 지원하지는 않습니다. 애플리케이션은 항상 지원되는 기능을 확인하기 위해 디바이스 기능을 쿼리해야 합니다.

Direct3D 9와 함께 제공되는 소프트웨어 및 참조 디바이스의 동작은 hal 디바이스의 동작과 동일하기 때문에 hal 디바이스로 작업하도록 작성된 애플리케이션 코드는 수정 없이 소프트웨어 또는 참조 디바이스에서 작동합니다. 제공된 소프트웨어 또는 참조 디바이스 동작은 hal 디바이스의 동작과 동일하지만 디바이스 기능은 다양하며 특정 소프트웨어 디바이스는 훨씬 더 작은 기능 집합을 구현할 수 있습니다.

동작

Direct3D를 사용하면 디바이스의 동작과 디바이스 유형을 지정할 수 있습니다. IDirect3D9::CreateDevice 메서드를 사용하면 하나 이상의 동작 플래그를 조합하여 Direct3D 디바이스의 전역 동작을 제어할 수 있습니다. 이러한 동작은 Direct3D의 런타임 부분에서 유지 관리되지 않는 것을 지정하고 디바이스 유형은 사용할 드라이버를 지정합니다. 일부 디바이스 동작 조합은 유효하지 않지만 모든 디바이스 유형에서 모든 디바이스 동작을 사용할 수 있습니다. 예를 들어 D3DCREATE_PUREDEVICE 사용하여 만든 디바이스에서 D3DDEVTYPE_SW 지정하는 것이 유효합니다.

시작