Freigeben über


Direct3D 11.2-Features

Die folgenden Funktionen wurden in Direct3D 11.2 hinzugefügt, das in Windows 8.1, Windows RT 8.1 und Windows Server 2012 R2 enthalten ist.

Unterteilte Ressourcen

Mit Direct3D 11.2 können Sie nebeneinander angeordnete Ressourcen erstellen, die als große logische Ressourcen betrachtet werden können, die kleine Mengen physischen Arbeitsspeichers verwenden. Nebeneinander angeordnete Ressourcen sind nützlich (z. B. mit Gelände in Spielen und App-UI).

Tiled resources are created by specifying the D3D11_RESOURCE_MISC_TILED flag. Verwenden Sie die folgende API, um mit einer nebeneinander angeordneten Ressource zu arbeiten:

Weitere Informationen zu nebeneinander angeordneten Ressourcen finden Sie unter nebeneinander angeordneten Ressourcen.

Unterstützung für nebeneinander angeordnete Ressourcen überprüfen

Bevor Sie nebeneinander angeordnete Ressourcen verwenden, müssen Sie herausfinden, ob das Gerät nebeneinander angeordnete Ressourcen unterstützt. So überprüfen Sie die Unterstützung für unterteilte Ressourcen:

HRESULT hr = D3D11CreateDevice(
    nullptr,                    // Specify nullptr to use the default adapter.
    D3D_DRIVER_TYPE_HARDWARE,   // Create a device using the hardware graphics driver.
    0,                          // Should be 0 unless the driver is D3D_DRIVER_TYPE_SOFTWARE.
    creationFlags,              // Set debug and Direct2D compatibility flags.
    featureLevels,              // List of feature levels this app can support.
    ARRAYSIZE(featureLevels),   // Size of the list above.
    D3D11_SDK_VERSION,          // Always set this to D3D11_SDK_VERSION for Windows Store apps.
    &device,                    // Returns the Direct3D device created.
    &m_d3dFeatureLevel,         // Returns feature level of device created.
    &context                    // Returns the device immediate context.
    );

if (SUCCEEDED(hr))
{
    D3D11_FEATURE_DATA_D3D11_OPTIONS1 featureData;
    DX::ThrowIfFailed(
        device->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS1, &featureData, sizeof(featureData))
        );

    m_tiledResourcesTier = featureData.TiledResourcesTier;
}

Erweiterte Unterstützung für WARP-Geräte

Direct3D 11.2 erweitert die Unterstützung für WARP- Geräte, die Sie erstellen, indem Sie D3D_DRIVER_TYPE_WARP im parameter DriverType von D3D11CreateDeviceübergeben. Der WARP-Softwarerenderer in Direct3D 11.2 bietet vollständige Unterstützung für Direct3D-Featureebene 11_1, einschließlich nebeneinander angeordneten Ressourcen, IDXGIDevice3::Trim, freigegebene BCn-Oberflächen, Minblend und Kartenstandard. Double-Unterstützung in HLSL-Shadern wurde ebenfalls zusammen mit der Unterstützung für 16x MSAA aktiviert.

Kommentieren von Grafikbefehlen

Mit Direct3D 11.2 können Sie Grafikbefehle mit dieser API kommentieren:

HLSL-Shaderverknüpfung

Windows 8.1 fügt separate Kompilierung und Verknüpfung von HLSL-Shadern hinzu, mit denen Grafikprogrammierer vorkompilierte HLSL-Funktionen erstellen, in Bibliotheken verpacken und zur Laufzeit mit vollständigen Shadern verknüpfen können. Dies ist im Wesentlichen eine Entsprechung von C/C++-separaten Kompilierungs-, Bibliotheken- und Verknüpfungskomponenten, und es ermöglicht Programmierern, vorkompilierten HLSL-Code zu verfassen, wenn weitere Informationen verfügbar sind, um die Berechnung abzuschließen. Weitere Informationen zur Verwendung von Shaderverknüpfungen finden Sie unter Verwenden von Shaderverknüpfungen.

Führen Sie diese Schritte aus, um einen endgültigen Shader mit dynamischer Verknüpfung zur Laufzeit zu erstellen.

So erstellen und verwenden Sie Shaderverknüpfungen

  1. Erstellen Sie ein ID3D11Linker- Linkerobjekt, das einen Verknüpfungskontext darstellt. Ein einzelner Kontext kann nicht verwendet werden, um mehrere Shader zu erzeugen. Ein Verknüpfungskontext wird verwendet, um einen einzelnen Shader zu erzeugen, und dann wird der Verknüpfungskontext weggeworfen.
  2. Verwenden Sie D3DLoadModule-, um Bibliotheken aus ihren Bibliotheksblobs zu laden und festzulegen.
  3. Verwenden Sie D3DLoadModule-, um ein Eintrags-Shader-Blob zu laden und festzulegen, oder erstellen Sie einen FLG-Shader-.
  4. Verwenden Sie ID3D11Module-::CreateInstance-, um ID3D11ModuleInstance--Objekte zu erstellen, und rufen Sie dann Funktionen für diese Objekte auf, um Ressourcen an ihre endgültigen Slots neu zu binden.
  5. Fügen Sie die Bibliotheken zum Linker hinzu, rufen Sie dann ID3D11Linker::Link- auf, um endgültigen Shaderbytecode zu erzeugen, der dann in der Laufzeit wie ein vollständig vorkompilierter und verknüpfter Shader geladen und verwendet werden kann.

Funktionsverknüpfungsdiagramm (FLG)

Windows 8.1 fügt außerdem das Funktionsverknüpfungsdiagramm (Function Linking Graph, FLG) hinzu. Sie können FLG verwenden, um Shader zu erstellen, die aus einer Sequenz vorkompilierten Funktionsaufrufen bestehen, die Werte miteinander übergeben. Bei Verwendung der FLG ist es nicht erforderlich, HLSL zu schreiben und den HLSL-Compiler aufzurufen. Stattdessen wird die Shaderstruktur programmgesteuert mit C++-API-Aufrufen angegeben. FLG-Knoten stellen Eingabe- und Ausgabesignaturen und Aufrufe von vorkompilierten Bibliotheksfunktionen dar. Die Reihenfolge der Registrierung der Funktionsaufrufknoten definiert die Reihenfolge der Aufrufe. Der Eingabesignaturknoten muss zuerst angegeben werden, während der Ausgabesignaturknoten zuletzt angegeben werden muss. FLG-Kanten definieren, wie Werte von einem Knoten an einen anderen übergeben werden. Die Datentypen der übergebenen Werte müssen identisch sein; es gibt keine implizite Typkonvertierung. Shape- und Swizzling-Regeln folgen dem HLSL-Verhalten und den Werten können nur in dieser Sequenz vorwärts übergeben werden. Informationen zur FLG-API finden Sie unter ID3D11FunctionLinkingGraph.

HLSL-Compiler für Posteingang

Der HLSL-Compiler ist jetzt in Windows 8.1 und höher posteingang. Jetzt können die meisten APIs für die Shaderprogrammierung in Windows Store-Apps verwendet werden, die für Windows 8.1 und höher erstellt wurden. Viele APIs für die Shaderprogrammierung konnten nicht in Windows Store-Apps verwendet werden, die für Windows 8 erstellt wurden. die Referenzseiten für diese APIs wurden mit einer Notiz gekennzeichnet. Einige Shader-APIs (z. B. D3DCompileFromFile) können jedoch weiterhin nur zum Entwickeln von Windows Store-Apps und nicht in Apps verwendet werden, die Sie an den Windows Store übermitteln; die Referenzseiten für diese APIs sind weiterhin mit einer Notiz gekennzeichnet.

Neuerungen in Direct3D 11-