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.
- Kacheln von Ressourcen
- Erweiterte Unterstützung für WARP-Geräte
- Kommentieren von Grafikbefehlen
- HLSL-Shaderverknüpfung
- HLSL-Compiler für Posteingang
- Zugehörige Themen
Kacheln von Ressourcen
Mit Direct3D 11.2 können Sie kachelierte Ressourcen erstellen, die als große logische Ressourcen betrachtet werden können, die kleine Mengen physischen Arbeitsspeichers verwenden. Kachelierte Ressourcen sind nützlich (z. B. mit Gelände in Spielen und App-Benutzeroberfläche).
Kachelierte Ressourcen werden erstellt, indem das flag D3D11_RESOURCE_MISC_TILED angegeben wird. Verwenden Sie die folgende API, um mit einer kachelierten Ressource zu arbeiten:
- ID3D11Device2::GetResourceTiling
- ID3D11DeviceContext2::UpdateTiles
- ID3D11DeviceContext2::UpdateTileMappings
- ID3D11DeviceContext2::CopyTiles
- ID3D11DeviceContext2::CopyTileMappings
- ID3D11DeviceContext2::ResizeTilePool
- ID3D11DeviceContext2::TiledResourceBarrier
- D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION Flag mit ID3D11Debug::SetFeatureMask
Weitere Informationen zu kachelnden Ressourcen finden Sie unter Gekachelte Ressourcen.
Überprüfen der Unterstützung für kachelierte Ressourcen
Bevor Sie kachelierte Ressourcen verwenden, müssen Sie herausfinden, ob das Gerät gekachelte Ressourcen unterstützt. Hier erfahren Sie, wie Sie die Unterstützung für gekachelte Ressourcen überprüfen:
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 bietet vollständige Unterstützung für Direct3D-Featureebene 11_1, einschließlich gekachelter Ressourcen, IDXGIDevice3::Trim, freigegebener BCn-Oberflächen, Minblend und Kartenstandard. Die doppelte Unterstützung in HLSL-Shadern wurde ebenfalls zusammen mit der Unterstützung für 16-fache MSAA aktiviert.
Kommentieren von Grafikbefehlen
Mit Direct3D 11.2 können Sie Grafikbefehle mit der folgenden API kommentieren:
- ID3D11DeviceContext2::IsAnnotationEnabled
- ID3D11DeviceContext2::BeginEventInt
- ID3D11DeviceContext2::SetMarkerInt
- ID3D11DeviceContext2::EndEvent
HLSL-Shaderverknüpfung
Windows 8.1 fügt eine 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 separaten C/C++-Kompilierungen, Bibliotheken und Verknüpfungen und ermöglicht Es Programmierern, vorkompilierten HLSL-Code zu erstellen, wenn weitere Informationen verfügbar sind, um die Berechnung abzuschließen. 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 mithilfe der dynamischen Verknüpfung zur Laufzeit zu erstellen.
So erstellen und verwenden Sie Shaderverknüpfungen
- 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.
- Verwenden Sie D3DLoadModule , um Bibliotheken aus ihren Bibliotheksblobs zu laden und festzulegen.
- Verwenden Sie D3DLoadModule , um ein Einstiegsshaderblob zu laden und festzulegen, oder erstellen Sie einen FLG-Shader.
- 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 binden.
- Fügen Sie dem Linker die Bibliotheken hinzu, und rufen Sie dann ID3D11Linker::Link auf, um den endgültigen Shaderbytecode zu erstellen, der dann geladen und in der Runtime wie ein vollständig vorkompilierter und verknüpfter Shader verwendet werden kann.
Funktionsverknüpfungsdiagramm (FLG)
Windows 8.1 fügt auch den Funktionsverknüpfungsgraph (FlG) hinzu. Sie können FLG verwenden, um Shader zu erstellen, die aus einer Sequenz von vorkompilierten Funktionsaufrufen bestehen, die Werte aneinander übergeben. Bei Verwendung der FLG ist es nicht erforderlich, HLSL zu schreiben und den HLSL-Compiler aufzurufen. Stattdessen wird die Shaderstruktur programmgesteuert mithilfe von 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 Swizzlingregeln folgen dem HLSL-Verhalten, und Werte 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 befindet sich jetzt in Windows 8.1 und höher im 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 einem Hinweis 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 einem Hinweis gekennzeichnet.
Zugehörige Themen