다음을 통해 공유


소프트웨어 계층

Direct3D 11 런타임은 코어의 기본 기능부터 시작하여 외부 계층에서 선택적 및 개발자 지원 기능을 빌드하는 계층으로 구성됩니다. 이 섹션에서는 각 계층의 기능에 대해 설명합니다.

일반적으로 계층은 기능을 추가하지만 기존 동작은 수정하지 않습니다. 예를 들어, 디버그 계층이 인스턴스화되면 추가 디버그 출력이 제공될 수 있지만 핵심 함수는 인스턴스화되는 디버그 계층과 관계없이 동일한 반환 값을 갖습니다.

디바이스를 만들 때 레이어를 만들려면 D3D11CreateDevice 또는 D3D11CreateDeviceAndSwapChain을 호출하고 하나 이상의 D3D11_CREATE_DEVICE_FLAG 값을 제공합니다.

Direct3D 11은 다음과 같은 런타임 계층을 제공합니다.

코어 계층

핵심 계층은 기본적으로 존재합니다. 는 API와 디바이스 드라이버 간에 매우 얇은 매핑을 제공하여 고주파 호출에 대한 오버헤드를 최소화합니다. 핵심 계층은 성능에 필수적이므로 중요한 유효성 검사만 수행합니다. 다시 기본 계층은 선택 사항입니다.

디버그 계층

디버그 계층은 포괄적인 추가 매개 변수 및 일관성 검사(예: 셰이더 연결 및 리소스 바인딩 유효성 검사, 매개 변수 일관성 검사 및 오류 설명 보고)를 제공합니다.

디버그 계층을 지원하는 디바이스를 만들려면 D3D11SDKLayers.dll을 가져오기 위해 DirectX SDK를 설치한 다음 D3D11CreateDevice 함수 또는 D3D11CreateDeviceAndSwapChain 함수를 호출할 때 D3D11_CREATE_DEVICE_DEBUG 플래그를 지정해야 합니다. 디버그 계층을 사용하도록 설정하여 애플리케이션을 실행하는 경우 애플리케이션이 상당히 느려집니다. 그러나 애플리케이션을 배송하기 전에 애플리케이션에 오류 및 경고가 클린 디버그 계층을 사용합니다. 자세한 내용은 디버그 계층을 사용하여 앱을 디버그하는 방법을 참조 하세요.

참고 항목

Windows 7용 플랫폼 업데이트(KB2670838) 또는 Windows 8.x를 사용하는 Windows 7의 경우 디버그 계층을 지원하는 디바이스를 만들려면 Windows 8.x용 Windows SDK(소프트웨어 개발 키트)를 설치하여 D3D11_1SDKLayers.dll을 가져옵니다.

참고 항목

Windows 10의 경우 디버그 계층을 지원하는 디바이스를 만들려면 "그래픽 도구" 선택적 기능을 사용하도록 설정합니다. 설정 패널로 이동하여 시스템, 앱 및 기능, 선택적 기능 관리, 기능 추가, "그래픽 도구"를 찾습니다.

참고 항목

DirectX 앱을 원격으로 디버그하는 방법에 대한 자세한 내용은 DirectX 앱 원격 디버깅을 참조 하세요.

 

또는 DirectX SDK의 일부로 포함된 DirectX 제어판 사용하여 디버그 플래그를 사용하거나 사용하지 않도록 설정할 수 있습니다.

디버그 계층은 메모리 누수를 나열할 때 해당 이름과 함께 개체 인터페이스 포인터의 목록을 출력합니다. 기본 식별 이름은 "<이름 없음>"입니다. ID3D11DeviceChild::SetPrivateData 메서드와 D3Dcommon.h에 있는 WKPDID_D3DDebugObjectName GUID를 사용하여 친숙한 이름을 설정할 수 있습니다. 예를 들어 mytexture.jpg의 SDKLayer 이름으로 pTexture의 이름을 지정하려면 다음 코드를 사용합니다.

const char c_szName[] = "mytexture.jpg";
pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );

일반적으로 프로덕션 버전에서 이러한 호출을 컴파일해야 합니다.

장치