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.

Gekachelte Ressourcen

Mit Direct3D 11.2 können Sie gekachelte Ressourcen erstellen, die als große logische Ressourcen mit geringer Menge an physischem Speicher bezeichnet werden können. Gekachelte Ressourcen sind (z.B.) mit Gelände in Spielen und App-Benutzeroberfläche nützlich.

Gekachelte Ressourcen werden erstellt, indem das FLAG D3D11 _ RESOURCE _ MISC _ TILED angegeben wird. Verwenden Sie diese API, um mit einer gekachelten Ressource zu arbeiten:

Weitere Informationen zu gekachelten Ressourcen finden Sie unter Gekachelte Ressourcen.

Überprüfen der Unterstützung von gekachelten Ressourcen

Bevor Sie gekachelte Ressourcen verwenden, müssen Sie herausfinden, ob das Gerät gekachelte Ressourcen unterstützt. So überprüfen Sie die Unterstützung für gekachelte 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 DriverType-Parameter von D3D11CreateDevice übergeben. Der WARP-Softwarerenderer in Direct3D 11.2 fügt vollständige Unterstützung für Direct3D-Featureebene 11 1 hinzu, einschließlich gekachelter _ Ressourcen, IDXGIDevice3::Trim,freigegebener BCn-Oberflächen, Minblend und Karten-Standard. Die doppelte Unterstützung in HLSL-Shadern wurde ebenfalls zusammen mit der Unterstützung für die 16-fache 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, wodurch Grafikprogrammierer vorkompilierte HLSL-Funktionen erstellen, in Bibliotheken packen und zur Laufzeit in vollständige Shader verknüpfen können. Dies entspricht im Wesentlichen der separaten C/C++-Kompilierung, Bibliotheken und Verknüpfung und ermöglicht Programmierern, vorkompilierten HLSL-Code zu erstellen, wenn weitere Informationen verfügbar sind, um die Berechnung fertig zu stellen. Weitere Informationen zur Verwendung der Shaderverknüpfung finden Sie unter Verwenden der Shaderverknüpfung.

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 verworfen.
  2. Verwenden Sie D3DLoadModule zum Laden und Festlegen von Bibliotheken aus ihren Bibliothekblobs.
  3. Verwenden Sie D3DLoadModule zum Laden und Festlegen eines Eintrags-Shaderblobs, 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 erneut an ihre endgültigen Slots zu gebunden.
  5. Fügen Sie dem Linker die Bibliotheken hinzu, und rufen Sie dann ID3D11Linker::Link auf, um endgültigen Shader-Bytecode zu erstellen, der dann geladen und in der Laufzeit wie ein vollständig vorkompiliertes und verknüpftes Shader verwendet werden kann.

Funktionsverknüpfungsdiagramm (FLG)

Windows 8.1 fügt auch das Function Linking Graph (FLG) hinzu. Sie können FLG verwenden, um Shader zu erstellen, die aus einer Sequenz von vorkompilierten Funktionsaufrufen bestehen, die Werte aneinander übergeben. Wenn Sie das FLG verwenden, müssen Sie HLSL nicht schreiben und den HLSL-Compiler aufrufen. Stattdessen wird die Shaderstruktur programmgesteuert mithilfe von C++-API-Aufrufen angegeben. FLG-Knoten stellen Eingabe- und Ausgabesignaturen und Aufrufe vorkompilierten Bibliotheksfunktionen dar. Die Reihenfolge der Registrierung der Funktionsaufrufknoten definiert die Sequenz 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. Form- und Swizzlingregeln folgen dem HLSL-Verhalten, und Werte können nur in dieser Sequenz weitergeleitet werden. Informationen zur FLG-API finden Sie unter ID3D11FunctionLinkingGraph.

HLSL-Posteingangscompiler

Der HLSL-Compiler ist jetzt inbox on Windows 8.1 und höher. 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. Die Referenzseiten für diese APIs wurden mit einem Hinweis markiert. 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 die Windows Store. Die Referenzseiten für diese APIs sind weiterhin mit einem Hinweis gekennzeichnet.

Neues in Direct3D 11