다음을 통해 공유


디바이스 유형(Direct3D 9)

HAL 디바이스

기본 디바이스 유형은 hal 디바이스이며, 하드웨어 가속 래스터화와 하드웨어 및 소프트웨어 꼭짓점 처리 둘 모두를 지원합니다. 애플리케이션이 실행되는 컴퓨터에 Direct3D를 지원하는 디스플레이 어댑터가 장착되어 있는 경우 애플리케이션에서 이 어댑터를 Direct3D 작업에 사용해야 합니다. Direct3D hal 디바이스는 하드웨어에서 변환, 조명 및 래스터화 모듈의 전부 또는 일부를 구현합니다.

애플리케이션은 그래픽 어댑터에 직접 액세스하지 않습니다. 이는 Direct3D 함수 및 메서드를 호출합니다. Direct3D는 hal을 통해 하드웨어에 액세스합니다. 애플리케이션이 실행되는 컴퓨터에서 hal을 지원하는 경우 hal 디바이스를 사용하여 최상의 성능을 얻을 수 있습니다.

hal 디바이스를 만들려면 디바이스 유형으로 D3DDEVTYPE_HAL 사용하여 CreateDevice를 호출합니다.

참조 디바이스

Direct3D 참조 디바이스 또는 기준 래스터라이저라는 추가 디바이스 유형을 지원합니다. 소프트웨어 디바이스와 달리 기준 래스터라이저는 모든 Direct3D 기능을 지원합니다. 이 디바이스는 디버깅 용도로 사용하기 위한 것이므로 SDK DirectX가 설치된 컴퓨터에서만 사용할 수 있습니다. 이러한 기능은 속도보다는 정확도를 위해 소프트웨어에서 구현되므로 결과가 아주 빠르지 않습니다. 기준 래스터라이저는 가능할 때마다 특수 CPU 명령을 사용하지만, 이는 소매 애플리케이션에는 적합하지 않습니다. 기준 래스터라이저를 기능 테스트 또는 데모용으로만 사용합니다. 참조 디바이스를 만들려면 D3DDEVTYPE_REF 디바이스 유형으로 사용하여 CreateDevice 메서드를 호출합니다.

HAL과 REF 디바이스 비교

HAL(하드웨어 추상화 계층) 디바이스와 REF(레퍼런스 래스터라이저) 디바이스는 Direct3D의 두 가지 주요 디바이스 유형입니다. 첫 번째는 하드웨어 지원을 기반으로 하며 매우 빠르지만 모든 것을 하지 않을 수 있습니다. 두 번째는 하드웨어 가속화를 사용하지 않으므로 매우 느리지만 모든 Direct3D 기능을 올바른 방법으로 지원하도록 보장됩니다. 일반적으로 HAL 디바이스만 사용하면 되지만, 그래픽 카드에서 지원하지 않는 일부 고급 기능을 사용하는 경우 REF로 대체해야 할 수도 있습니다.

REF를 사용해야 하는 다른 경우는 HAL 디바이스에서 이상한 결과를 생성하는 경우입니다. 즉, 코드가 정확하다고 확신하지만 결과가 예상한 것과 다릅니다. REF 디바이스는 올바르게 작동하도록 보장되므로 REF 디바이스에서 애플리케이션을 테스트하고 이상한 동작이 계속되는지 확인할 수 있습니다. 그렇지 않은 경우 (a) 애플리케이션이 그래픽 카드에서 지원하지 않는 것을 지원한다고 가정하거나 (b) 드라이버 버그임을 의미합니다. REF 디바이스에서도 계속 작동하지 않는 경우 애플리케이션 버그입니다.

하드웨어와 소프트웨어 꼭짓점 처리 비교

하드웨어 및 소프트웨어 꼭짓점 처리는 실제로 HAL 디바이스에만 적용됩니다. 파이프라인을 통해 꼭짓점을 푸시할 때 변환(세계, 뷰 및 프로젝션 매트릭스에 의해 차례로) 조명(D3D의 기본 제공 조명)이어야 합니다. 이 처리 단계는 T&L(변환 및 조명용)이라고 합니다. 하드웨어 꼭짓점 처리는 하드웨어에서 이를 지원하는 경우 하드웨어에서 수행됨을 의미합니다. ergo, 소프트웨어 꼭짓점 처리는 소프트웨어입니다. 일반적으로 하드웨어 T&L 디바이스를 먼저 만들고 실패하는 경우 Mixed를 시도하고 실패하면 Software를 사용해 보세요. (소프트웨어가 실패하면 오류와 함께 포기하고 종료합니다).

Direct3D 디바이스