Unterstützt Windows 8 weiterhin DirectX 9?

9

Unterstützt Windows 8 DirectX 9? Weil ich einige Beispiele durchgesehen habe, die in C ++ und DirectX 9 für Windows 8 geschrieben wurden. Es war nicht so, wie ich es kenne (siehe hier http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2) ). Beispiel: DirectX mit COM initialisieren:

ComPtr<ID3D11Device1> dev;
ComPtr<ID3D11DeviceContext1> devcon;

Es ist einfach komisch, weil ich es auf die alte Art kenne:

ID3D11Device *dev;                  
ID3D11DeviceContext *devcon;  

(Ich hoffe du verstehst was ich erzählen will)

Ich hoffe, es hat sich nicht vollständig geändert, da das neue Betriebssystem veröffentlicht wurde.

LaVolpe
quelle
1
Ich kann mir kaum vorstellen, dass Microsoft plötzlich die Unterstützung für über 90% aller Spiele auf der Windows-Plattform einstellen würde. Ich finde es auch noch schwieriger zu glauben, dass die Leute von einem solchen Schritt jetzt nicht wütend werden würden.
Jari Komppa
Es ist jedoch möglich, dass die neuesten SDKs keine dx9-Header / -Bibliotheken enthalten. Ich habe nicht überprüft. Das bedeutet nicht, dass Sie den dx9 sdk nicht wie zuvor verwenden können. Es sei denn natürlich, das neueste visuelle Studio verbietet Ihnen dies irgendwie, aber das wäre irgendwie albern.
Jari Komppa
Nun, ich kann es auch nicht glauben, aber ich denke, es ist möglich, weil der PC die Marke "Windows 8" hat und die meisten über einen Touchscreen verfügen. Haben Sie jemals ein in DirectX geschriebenes Spiel gesehen, das das Spielen mit Touchscreen unterstützt?
LaVolpe
Ich bin mir ziemlich sicher, dass Sie mit dx9 keine "modernen UI" -Apps erstellen können.
Jari Komppa
1
Die D3D-Objekte waren schon immer COM-Objekte - es war immer möglich, keine Rohzeiger zu verwenden, sondern sie in einen intelligenten COM-Zeiger zu setzen.

Antworten:

12

Ja , Windows 8 unterstützt DirectX 9.

Für die Entwicklung ist das alte DirectX SDK jetzt veraltet , aber Sie haben alle Bibliotheken und Header, die Sie im neuen Windows 8 SDK benötigen, das in Visual Studio 2012 enthalten ist. Sie können problemlos den "alten Weg" gehen . Wenn Sie PIX zum Debuggen oder die D3DX-Bibliothek auf hoher Ebene benötigen, müssen Sie das alte DXSDK erneut installieren, da dies nicht im Windows 8-SDK enthalten ist.

Dies gilt jedoch nur für einfache alte Desktop-Apps. Für Apps im Metro-Stil lasse ich Chuck Walbourn von Microsoft sprechen :

Direct3D9 und Direct3D9Ex werden für Anwendungen im Metro-Stil nicht unterstützt. Die Verwendung des DirectX SDK mit Anwendungen im Metro-Stil wird nicht empfohlen oder unterstützt. Siehe http://msdn.microsoft.com/en-us/library/ee663275.aspx .

Es stehen eine Reihe von Ressourcen zur Verfügung, die Sie beim Portieren einer Direct3D 9-Codebasis nach Direct3D 11 unterstützen. Der Großteil des Materials für das Portieren von Direct3D 9 nach Direct3D 10.x gilt hier vollständig, da die API von Direct3D 11 Direct3D 10 sehr ähnlich ist.

Siehe http://blogs.msdn.com/b/chuckw/archive/2011/07/11/getting-started-with-direct3d-11.aspx . Lesen Sie unbedingt Windows to Reality: Optimale Nutzung von Direct3D 10-Grafiken in Ihrer Spielepräsentation, da es zahlreiche Fallstricke und Leistungsprobleme abdeckt, auf die Entwickler in der Vergangenheit gestoßen sind, sowie DirectX 11 Technology Update, um eine Zusammenfassung der Unterschiede zwischen Direct3D 10 zu erhalten .x und Direct3D 11.

MSDN verfügt auch über eine Portierungsanleitung für http://msdn.microsoft.com/en-us/library/ff476190.aspx, die Sie auf http://msdn.microsoft.com/en-us/library/bb205073.aspx für verweist direkt von Direct3D 9 nach Direct3D 11.

Leider können Sie D3D9 nicht direkt für Apps im Metro-Stil verwenden. Sie können jedoch D3D11 verwenden und sich auf eine bestimmte Funktionsstufe beschränken (z. B. D3D_FEATURE_LEVEL_9_3), wenn Sie ältere Hardware unterstützen möchten.

Laurent Couvidou
quelle
Wow, danke für deine Antwort. Wie ich sehe, haben Sie eine großartige Recherche durchgeführt
LaVolpe
Nun, nicht wirklich, ich arbeite gerade daran;)
Laurent Couvidou
1
AFAIK, das mit VS 2012 gelieferte win8 SDK, liefert keine D3D11X * -Header mehr - nur noch D3D11 *. Dadurch haben Sie keine Dienstprogrammfunktionen mehr, z. B. das Laden von Shadern aus einer Datei und das Kompilieren in einem Funktionsaufruf.
Tatsächlich. Was Microsoft dazu sagt: "Beachten Sie, dass Ersatztechnologien für die aktuelle Verwendung von D3DX11 DirectXTex und DirectXTK umfassen. D3DXMath wird durch DirectXMath ersetzt." Bisher nicht getestet.
Laurent Couvidou
3

Windows 8 bietet dieselbe grundlegende Unterstützung für Direct3D 9-Anwendungen wie Windows 7 und Windows Vista. Direct3D 9 ist ein Legacy und es gibt definitiv einige kompatible Probleme, die sich möglicherweise auf Direct3D 9-basierte Spiele auswirken können, aber sie funktionieren mehr oder weniger so gut wie unter Windows 7.

Die Entwicklung mit Direct3D 9 unter Windows 8 ist etwas schwieriger als unter Windows 7. Die Standard-Direct3D 9-Header sind Teil des Windows 8.0 SDK (im Lieferumfang von VS 2012 enthalten), D3DX9 jedoch nicht. Die Direct3D 9-Debug-Laufzeit wird unter Windows 8 nicht unterstützt. Sie können das ältere DirectX SDK unter Windows 8 verwenden, es gibt jedoch eine Reihe von Problemen bei der Installation und Einschränkungen.

Die empfohlene API zum Schreiben neuer Anwendungen unter Windows 7 und Windows 8 ist Direct3D 11. Dies funktioniert sowohl für Win32-Desktopanwendungen als auch für Windows Store-Apps. Es wird außerdem empfohlen, das Windows 8.x SDK und nicht das DirectX SDK zu verwenden.

Unter Spiele für Windows und das DirectX SDK finden Sie viele Beiträge zu diesem Thema.

Chuck Walbourn
quelle
Beachten Sie, dass Sie DirectX nicht unter einer Windows-Version installieren, die neuer als Windows XP Service Pack 1 ist. Das Paket "DirectX End-User Runtime" wird jedoch unter Windows XP SP2, Windows Vista, Windows 7 und Windows 8.x installiert es nie installiert „DirectX“. Es werden nur einige Hilfs-DLLs bereitgestellt, die optionale Bits aus dem jetzt älteren DirectX SDK sind: XINPUT 1.3, XAudio 2.7, D3DX usw. Direct3D, DirectInput, DirectSound usw. werden immer nur im Rahmen offizieller Service Packs oder Windows Update-Versionen aktualisiert. Link
Chuck Walbourn
2

DirectX wird unter Windows 8, Windows 7, Windows Vista oder Windows XP installiert.

Mikolaj Marcisz
quelle