Bearbeiten

Freigeben über


Häufig gestellte Fragen zum Portieren von DirectX 11

Antworten auf häufig gestellte Fragen zum Portieren von Spielen zu Universelle Windows-Plattform (UWP).

Wird das Portieren meines Spiels eine Reihe von Such- und Ersetzungsvorgängen für API-Methoden sein, oder muss ich einen durchdachteren Portierungsprozess planen?

Direct3D 11 ist ein erhebliches Upgrade von Direct3D 9. Es gibt mehrere Paradigmenverschiebungen, einschließlich separater APIs für den virtualisierten Grafikadapter und seinen Kontext sowie eine neue Ebene von Polymorphismus für Geräteressourcen. Ihr Spiel kann grafikhardware im Wesentlichen auf die gleiche Weise verwenden, aber Sie müssen mehr über die neue Direct3D 11-API-Architektur erfahren und jeden Teil Ihres Grafikcodes aktualisieren, um die richtigen API-Komponenten zu verwenden. Siehe Portierungskonzepte und Überlegungen.

Was ist der neue Gerätekontext? Soll ich mein Direct3D 9-Gerät durch das Direct3D 11-Gerät, den Gerätekontext oder beides ersetzen?

Das Direct3D-Gerät wird jetzt zum Erstellen von Ressourcen im Videospeicher verwendet, während der Gerätekontext verwendet wird, um den Pipelinestatus festzulegen und Renderingbefehle zu generieren. Weitere Informationen finden Sie unter: Was sind die wichtigsten Änderungen seit Direct3D 9?

Muss ich meinen Spielzeitgeber für UWP aktualisieren?

QueryPerformanceCounter ist zusammen mit QueryPerformanceFrequency immer noch die beste Möglichkeit, einen Spielzeitgeber für UWP-Apps zu implementieren.

Beachten Sie eine Nuance mit Zeitgebern und dem Lebenszyklus der UWP-App. Das Anhalten/Fortsetzen unterscheidet sich von dem erneuten Starten eines Desktopspiels durch einen Spieler, da das Spiel eine Momentaufnahme in der Zeit nach der letzten Wiedergabe des Spiels fortsetzt. Wenn eine große Zeit vergangen ist - z. B. einige Wochen - einige Spielzeitgeberimplementierungen verhalten sich möglicherweise nicht ordnungsgemäß. Sie können App-Lebenszyklusereignisse verwenden, um den Timer zurückzusetzen, wenn das Spiel fortgesetzt wird.

Spiele, die weiterhin die RDTSC-Anweisung verwenden, müssen aktualisiert werden. Siehe Spieldauer und Multicore-Prozessoren.

Mein Spielcode basiert auf D3DX und DXUT. Gibt es etwas, das mir bei der Migration meines Codes helfen kann?

Das DirectX Tool Kit (DirectXTK) -Communityprojekt bietet Hilfsklassen für die Verwendung mit Direct3D 11.

Gewusst wie Codepfade für den Desktop und den Microsoft Store verwalten?

Chuck Walbourns Artikelreihe mit dem Titel Dual-use Coding Techniques for Games bietet Anleitungen zum Teilen von Code zwischen dem Desktop und den Microsoft Store-Codepfaden.

Gewusst wie Bildressourcen in meiner DirectX-UWP-App laden?

Es gibt zwei API-Pfade zum Laden von Bildern:

Sie können auch den DDSTextureLoader und den WICTextureLoader aus directXTK oder DirectXTex verwenden.

Wo finde ich das DirectX SDK?

Das DirectX SDK ist im Rahmen des Windows SDK enthalten. Das neueste DirectX SDK, das vom Windows SDK getrennt war, war im Juni 2010. Direct3D-Beispiele befinden sich im Codekatalog zusammen mit den restlichen Windows-App-Beispielen.

Was ist mit DirectX-Weiterverteilern?

Die überwiegende Mehrheit der Komponenten im Windows SDK ist bereits in unterstützten Versionen des Betriebssystems enthalten oder verfügt über keine DLL-Komponente (z. B. DirectXMath). Alle Direct3D-API-Komponenten, die UWP-Apps verwenden können, sind bereits für Ihr Spiel verfügbar. Sie müssen sie nicht weiterverteilen.

Win32-Desktopanwendungen verwenden weiterhin DirectSetup. Wenn Sie also auch die Desktopversion Ihres Spiels aktualisieren, lesen Sie die Direct3D 11-Bereitstellung für Spieleentwickler.

Gibt es eine Möglichkeit, meinen Desktopcode auf DirectX 11 zu aktualisieren, bevor ich von Effects abkehre?

Weitere Informationen finden Sie unter " Effects for Direct3D 11 Update". Effects 11 hilft beim Entfernen von Abhängigkeiten von älteren DirectX SDK-Headern; sie ist für die Verwendung als Portierungshilfe vorgesehen und kann nur mit Desktop-Apps verwendet werden.

Gibt es einen Pfad zum Portieren meines DirectX 8-Spiels zu UWP?

Ja:

Kann ich mein DirectX 10- oder 11-Spiel zu UWP portieren?

DirectX 10.x- und 11-Desktopspiele sind einfach zu UWP portieren. Siehe Migrieren zu Direct3D 11.

Gewusst wie das richtige Anzeigegerät in einem Multimonitorsystem auswählen?

Der Benutzer wählt aus, auf welchem Monitor Ihre App angezeigt wird. Lassen Sie Windows den richtigen Adapter bereitstellen, indem Sie D3D11CreateDevice aufrufen, wobei der erste Parameter auf nullptr festgelegt ist. Rufen Sie dann die IDXGIDevice-Schnittstelle des Geräts ab, rufen Sie GetAdapter auf, und verwenden Sie den DXGI-Adapter, um die Swapchain zu erstellen.

Gewusst wie Antialiasing aktivieren?

Antialiasing (Multisampling) ist aktiviert, wenn Sie das Direct3D-Gerät erstellen. Auflisten der Multisamplingunterstützung durch Aufrufen von CheckMultisampleQualityLevels und Festlegen von Multisampleoptionen in der DXGI_SAMPLE_DESC Struktur, wenn Sie CreateSurface aufrufen.

Mein Spiel wird mit Multithreading und/oder verzögertem Rendering gerendert. Was muss ich für Direct3D 11 wissen?

Besuchen Sie die Einführung in Multithreading in Direct3D 11 , um zu beginnen. Eine Liste der wichtigsten Unterschiede finden Sie unter Threading-Unterschiede zwischen Direct3D-Versionen. Beachten Sie, dass das verzögerte Rendering anstelle eines unmittelbaren Kontexts einen verzögerten Gerätekontext verwendet.

Wo kann ich mehr über die programmierbare Pipeline seit Direct3D 9 lesen?

Was sollte ich anstelle des X-Dateiformats für meine Modelle verwenden?

Obwohl wir keinen offiziellen Ersatz für das X-Dateiformat haben, verwenden viele beispiele das SDKMesh-Format. Visual Studio verfügt auch über eine Inhaltspipeline , die mehrere gängige Formate in CMO-Dateien kompiliert, die mit Code aus dem Visual Studio 3D-Starterkit geladen oder mithilfe von DirectXTK geladen werden können.

Gewusst wie meine Shader debuggen?

Microsoft Visual Studio enthält Diagnosetools für DirectX-Grafiken. Siehe Debuggen von DirectX-Grafiken.

Was ist das Direct3D 11-Äquivalent für x-Funktion?

Siehe die in directX 9-Features bereitgestellte Funktionszuordnung zu DirectX 11-APIs.

Was ist das DXGI\_FORMAT Äquivalent des y-Oberflächenformats?

Sehen Sie sich die Oberflächenformatzuordnung an, die in directX 9-Features zu DirectX 11-APIs bereitgestellt wird.