Freigeben über


Planen Sie Ihre DirectX-Portierung

Zusammenfassung

Planen Sie das Portierungsprojekt ihres Spiels von DirectX 9 zu DirectX 11 und Universelle Windows-Plattform (UWP): Führen Sie ein Upgrade des Grafikcodes durch, und fügen Sie Ihr Spiel in die Windows-Runtime Umgebung ein.

Planen des Portierens von Grafikcode

Bevor Sie mit der Portierung Ihres Spiels zu UWP beginnen, ist es wichtig, sicherzustellen, dass Ihr Spiel keine Halteover von Direct3D 8 hat. Stellen Sie sicher, dass Ihr Spiel keine Reste der Pipeline für feste Funktionen enthält. Eine vollständige Liste der veralteten Features, einschließlich der Funktionen mit fester Pipeline, finden Sie unter veraltete Features.

Das Upgrade von Direct3D 9 auf Direct3D 11 ist mehr als eine Such- und Ersetzungsänderung. Sie müssen den Unterschied zwischen direct3D-Gerät, Gerätekontext und Grafikinfrastruktur kennen und weitere wichtige Änderungen seit Direct3D 9 erfahren. Sie können diesen Prozess starten, indem Sie die anderen Themen in diesem Abschnitt lesen.

Sie müssen die D3DX- und DXUT-Hilfsbibliotheken durch Ihre eigenen Hilfsbibliotheken oder durch Communitytools ersetzen. Weitere Informationen finden Sie im Abschnitt "Featurezuordnung ".

Hinweis : Sie können das DirectX Tool Kit oder DirectXTex verwenden, um einige Funktionen zu ersetzen, die zuvor von D3DX und DXUT bereitgestellt wurden.

 

Shader, die in Assemblysprache geschrieben wurden, sollten mit der Funktionalität der Shadermodell 4 Ebene 9_1 oder 9_3 auf HLSL aktualisiert werden, und Shader, die für die Effektbibliothek geschrieben wurden, müssen auf eine neuere Version der HLSL-Syntax aktualisiert werden. Weitere Informationen finden Sie im Abschnitt "Featurezuordnung ".

Machen Sie sich mit den verschiedenen Direct3D-Featureebenen vertraut. Featureebenen klassifizieren eine vielzahl von Videohardware, indem Gruppen bekannter Funktionen definiert werden. Jeder Satz entspricht ungefähr Versionen von Direct3D, von 9.1 bis 11.2. Alle Featureebenen verwenden die DirectX 11-API.

Planen der Portieren von Win32-UI-Code zu CoreWindow

UWP-Apps werden in einem Fenster ausgeführt, das für einen App-Container erstellt wurde, der als "CoreWindow" bezeichnet wird. Ihr Spiel steuert das Fenster, indem er von IFrameworkView erbt, was weniger Implementierungsdetails als ein Desktopfenster erfordert. Die Hauptschleife Ihres Spiels befindet sich in der IFrameworkView::Run-Methode.

Der Lebenszyklus einer UWP-App unterscheidet sich stark von einer Desktop-App. Sie müssen das Spiel häufig speichern, da die App bei einem Anhalteereignis nur eine begrenzte Zeit hat, um den Ausführungscode zu beenden, und Sie möchten sicherstellen, dass der Spieler beim Fortsetzen der App wieder an die Stelle zurückkehren kann, an der sie sich gerade befanden. Spiele sollten nur oft genug speichern, um ein kontinuierliches Spielerlebnis beim Fortsetzen aufrechtzuerhalten, aber nicht so oft, dass das Spiel Die Framerate speichert oder dazu führt, dass das Spiel stottert. Ihr Spiel muss möglicherweise den Spielzustand laden, wenn das Spiel aus einem beendeten Zustand fortgesetzt wird.

DirectXMath kann als Ersatz für D3DXMath und XNAMath verwendet werden, und es kann nützlich sein, wenn Sie eine mathematische Bibliothek benötigen. DirectXMath verfügt über schnelle, tragbare Datentypen und Typen, die für die Verwendung mit Shadern ausgerichtet und gepackt sind.

Systemeigene Bibliotheken wie die verriegelte API wurden erweitert, um systeminterne Arm-Bibliotheken zu unterstützen. Wenn Ihr Spiel verriegelte APIs verwendet, können Sie sie weiterhin in DirectX 11 und UWP verwenden.

Unsere Vorlagen und Codebeispiele verwenden neue C++-Features, mit denen Sie möglicherweise noch nicht vertraut sind. Beispielsweise werden asynchrone Methoden mit Lambda-Ausdrücken verwendet, um Direct3D-Ressourcen zu laden, ohne den UI-Thread zu blockieren.

Es gibt zwei Konzepte, die Sie häufig verwenden werden: