다음을 통해 공유


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 지정하는 것이 유효합니다.

시작