Softwareebenen
Die Direct3D 11-Runtime wird mit Ebenen erstellt, beginnend mit der grundlegenden Funktionalität im Kern und dem Erstellen optionaler und entwicklergestützter Funktionen in äußeren Ebenen. In diesem Abschnitt wird die Funktionalität der einzelnen Ebenen beschrieben.
In der Regel fügen Ebenen Funktionalität hinzu, ändern aber nicht vorhandenes Verhalten. Kernfunktionen verfügen beispielsweise unabhängig von der instanziierten Debugebene über dieselben Rückgabewerte, obwohl zusätzliche Debugausgaben bereitgestellt werden können, wenn die Debugebene instanziiert wird.
Um Ebenen beim Erstellen eines Geräts zu erstellen, rufen Sie D3D11CreateDevice oder D3D11CreateDeviceAndSwapChain auf , und geben Sie einen oder mehrere D3D11_CREATE_DEVICE_FLAG Werte an.
Direct3D 11 stellt die folgenden Laufzeitebenen bereit:
Kernebene
Die Kernebene ist standardmäßig vorhanden. bietet eine sehr dünne Zuordnung zwischen der API und dem Gerätetreiber, wodurch der Mehraufwand für hochfrequente Aufrufe minimiert wird. Da die Kernschicht für die Leistung von entscheidender Bedeutung ist, führt sie nur eine kritische Überprüfung durch. Die restlichen Ebenen sind optional.
Debugebene
Die Debugebene bietet eine umfassende zusätzliche Parameter- und Konsistenzüberprüfung (z. B. Die Überprüfung der Shaderverknüpfung und Ressourcenbindung, das Überprüfen der Parameterkonsistenz und das Melden von Fehlerbeschreibungen).
Um ein Gerät zu erstellen, das die Debugebene unterstützt, müssen Sie das DirectX SDK installieren (um D3D11SDKLayers.dll abzurufen) und dann das D3D11_CREATE_DEVICE_DEBUG-Flag beim Aufrufen der D3D11CreateDevice-Funktion oder der D3D11CreateDeviceAndSwapChain-Funktion angeben. Wenn Sie Ihre Anwendung mit aktivierter Debugebene ausführen, ist die Anwendung wesentlich langsamer. Um jedoch sicherzustellen, dass Ihre Anwendung vor dem Versand sauber von Fehlern und Warnungen ist, verwenden Sie die Debugebene. Weitere Informationen finden Sie unter Verwenden der Debugebene zum Debuggen von Apps.
Hinweis
Installieren Sie für Windows 7 mit Platform Update für Windows 7 (KB2670838) oder Windows 8.x, um ein Gerät zu erstellen, das die Debugebene unterstützt, das Windows Software Development Kit (SDK) für Windows 8.x, um D3D11_1SDKLayers.dll zu erhalten.
Hinweis
Um Windows 10 ein Gerät zu erstellen, das die Debugebene unterstützt, aktivieren Sie das optionale Feature "Grafiktools". Wechseln Sie zum Bereich Einstellungen unter System, Apps-Features & , Optionale Features verwalten, Feature hinzufügen, und suchen Sie dann nach "Grafiktools".
Hinweis
Informationen zum Remotedebuggen von DirectX-Apps finden Sie unter Remotedebuggen von DirectX-Apps.
Alternativ können Sie das Debugflag mithilfe der DirectX-Systemsteuerung aktivieren/deaktivieren, die als Teil des DirectX SDK enthalten ist.
Wenn die Debugebene Speicherverluste auflistet, gibt sie eine Liste von Objektschnittstellenzeigern zusammen mit ihren Anzeigenamen aus. Der Standardanzeigename ist "<unbenannt>". Sie können den Anzeigenamen mithilfe der ID3D11DeviceChild::SetPrivateData-Methode und der WKPDID_D3DDebugObjectName GUID in D3Dcommon.h festlegen. Verwenden Sie beispielsweise den folgenden Code, um pTexture mit dem SDKLayer-Namen mytexture.jpg zu benennen:
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 kompilieren.
Zugehörige Themen