Softwareschichten

Die Direct3D 11-Laufzeit wird mit Schichten konstruiert, die mit grundlegenden Funktionen am Kern beginnen und optionale Funktionen sowie Funktionen zur Unterstützung des Entwicklers in äußeren Schichten aufbauen. In diesem Abschnitt wird die Funktionalität der einzelnen Schichten beschrieben.

Im Allgemeinen fügen Schichten die Funktionalität hinzu, ändern aber nicht das bestehende Verhalten. Kernfunktionen verfügen z. B. unabhängig von der instanziierten Debugschicht über die gleichen Rückgabewerte, obwohl beim Instanziieren der Debugschicht möglicherweise eine zusätzliche Debugausgabe bereitgestellt wird.

Um Schichten zu erstellen, wenn ein Gerät erstellt wird, rufen Sie D3D11CreateDevice oder D3D11CreateDeviceAndSwapChain auf, und geben Sie einen oder mehrere D3D11_CREATE_DEVICE_FLAG-Werte an.

Direct3D 11 bietet die folgenden Laufzeitschichten:

Kernschicht

Die Kernschicht ist standardmäßig vorhanden; sie bietet eine sehr dünne Zuordnung zwischen der API und dem Gerätetreiber und minimiert so den Overhead für hochfrequente Aufrufe. Da die Kernschicht für die Leistung wesentlich ist, führt sie nur wichtige Validierungsaufgaben aus. Die anderen Schichten sind optional.

Debugschicht

Die Debugschicht bietet eine umfangreiche zusätzliche Parameter- und Konsistenzvalidierung (z. B. eine Überprüfung der Shader-Bindung und der Ressourcenbindung, eine Überprüfung der Parameterkonsistenz und die Meldung von Fehlerbeschreibungen) .

Um ein Gerät zu erstellen, das die Debugschicht unterstützt, müssen Sie das DirectX SDK installieren (um D3D11SDKLayers.dll zu erhalten) und dann das D3D11_CREATE_DEVICE_DEBUG-Flag angeben, wenn Sie die D3D11CreateDevice-Funktion oder die D3D11CreateDeviceAndSwapChain-Funktion aufrufen. Beachten Sie, dass Anwendung mit aktivierter Debugschicht erheblich langsamer ausgeführt wird.

Alternativ können Sie das Debugflag über die als Teil des DirectX SDK enthaltene DirectX-Systemsteuerung aktivieren/deaktivieren.

Wenn die Debugschicht Speicherverluste aufführt, gibt sie eine Liste von Objektschnittstellenzeigern zusammen mit deren Anzeigenamen aus. Der Standardanzeigename ist "<unnamed>". Sie können den Anzeigenamen mit der ID3D11DeviceChild::SetPrivateData-Methode und der WKPDID_D3DDebugObjectName-GUID in D3Dcommon.h. festlegen. Um beispielsweise pTexture den SDKLayer-Namen "mytexture.jpg" zu geben, verwenden Sie den folgenden Code:



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


In der Regel sollten Sie diese Aufrufe aus Ihrer Produktionsversion heraus kompilieren.

Verwandte Themen

Geräte

 

 

Anzeigen: