Soll ich Direct3D 9, 10 oder 11 lernen? [geschlossen]

14

Ich fange gerade an, mit Direct3D in die 3D-Programmierung einzusteigen. Welche Version von D3D soll ich kaufen?

11 sieht ziemlich gut aus, aber 9 und 10 scheinen immer noch ziemlich präsent zu sein. Welche Version ist angesichts des aktuellen Stands der Spieleentwicklungsbranche sinnvoller, um mit der Verwendung zu beginnen?

dotminic
quelle
"Welche Technologie soll verwendet werden?" - Fragen sind keine guten Q / A-Fragen.
MichaelHouse

Antworten:

12

Das hängt davon ab, ob Sie eine Engine für ein Spiel entwerfen möchten, das in drei Jahren oder in einem Jahr oder in sechs Monaten erstellt werden soll, und ob Sie an Konsolenports denken oder nicht. Es wird relativ einfach sein, eine 360-Portierung Ihres Spiels von Direct3D9 aus zu entfernen, aber Sie müssen noch viel mehr von D3D11 aus tun. Denken Sie daran, dass D3D11 alle XP-Benutzer sperrt, wenn nicht unbedingt die gesamte D3D9-Hardware.

Die jüngste Steam-Umfrage ergab, dass etwa 16% der Benutzer noch Windows XP verwenden. Können Sie es sich leisten, sie auszuschneiden? Wie wird sich das ändern, wenn Ihr Spiel fertig ist? Werden Sie Funktionen verwenden, die von der höheren API-Ebene abhängen? Dies sind Fragen, die Sie selbst beantworten müssen.

Direct3D 9 ist verdammt leicht zugänglich und man kann mit einem D3D9-Spiel viele Leute erreichen, aber die Tage sind gezählt, besonders auf dem PC. Wenn Sie nicht daran interessiert sind, diese Leute anzugreifen, hat das wenig Sinn.

Oh, und kümmere dich nicht um DX10. Es gibt überhaupt keinen Grund, es über DX11 zu verwenden. Es sei denn, Sie möchten D2D / DirectWrite verwenden, was nicht unangemessen ist.

Natürlich ist es erwähnenswert, dass es in DX11 keinen Ersatz für Klassen gibt, die ich als Bastler in DX9 äußerst nützlich fand. ID3DXMesh, ID3DXSprite, ID3DXFont usw. müssen ID3DXEffect aus dem Quellcode kompilieren. Microsoft empfiehlt DirectWrite, ID3DXFont zu ersetzen, aber sie haben natürlich vergessen, DX11 tatsächlich mit den neuen Direct2D / DirectWrite-Systemen kompatibel zu machen, was meiner Meinung nach verblüffend dumm war .

DeadMG
quelle
Warum haben sie das Effekt-Framework entfernt? Es war eine sehr nützliche Klasse IMO.
Dotminic
@__dominic: Es wird nicht entfernt, aber Sie müssen es selbst kompilieren.
DeadMG
1
@__dominic: DeadMG hat darauf hingewiesen, dass das Effekt-Framework nicht entfernt wurde. Es wurde in einen eigenständigen Satz von Codedateien zerlegt, die Sie selbst kompilieren können. Dies wurde angeblich durchgeführt, um eine flüssigere Versionierung als beim D3D-Core zu ermöglichen Vereinfachen Sie Bereitstellungsprobleme (insbesondere in Bezug auf D3DX).
1
Ich denke, dass 25% der XP-Benutzer weniger wert sind, als dass nur 17% über DX11-GPUs verfügen (derzeit).
DMan
2
@DMan: D3D11 kann auf Downlevel-Hardware ausgeführt werden, einschließlich D3D9-Hardware.
DeadMG
9

tldr: Lerne D3D11.

Der Unterschied zwischen 10 und 11 ist in Bezug auf die Form der API ziemlich gering. Mit D3D11 können Sie Down-Leveling verwenden, um Code für die D3D11-API zu schreiben, die bis zur Hardware der D3D9-Klasse zurückläuft (beachten Sie jedoch, dass Sie weiterhin Vista oder höher benötigen). Sie können also auch die neuere API lernen, die meiner Meinung nach sauberer und dennoch einheitlicher ist.

Wenn Sie jedoch nicht über Vista oder höher verfügen oder Ihren eigenen Code unter XP ausführen möchten (um beispielsweise Ihr Spiel an XP-Benutzer zu verteilen), müssen Sie D3D9 verwenden. Der XP-Markt schrumpft jedoch wahrscheinlich. Ich würde also sagen, wenn Sie können, sollten Sie 11 kaufen.


quelle
3

Wenn Sie sich mit 3D-Programmierung noch nicht auskennen und insbesondere mit COM- und Windows-Programmierung noch nicht vertraut sind, rate ich dringend davon ab, DirectX jetzt zu erlernen. Meiner Erfahrung nach ist DirectX ein äußerst leistungsfähiges Tool, es weist jedoch eine sehr steile Lernkurve auf, die Sie zusätzlich zu den Lernkurven der Windows-Programmierung, 3D-Programmierung und vielen anderen berücksichtigen müssen. Wenn Sie mit DirectX beginnen, werden Sie möglicherweise von allen Details der Codeerstellung überfordert sein, daher rate ich davon ab.

Stattdessen würde ich eine einfachere API empfehlen, mit der Sie sich mehr auf das Erlernen der 3D-Programmierung konzentrieren können. XNA ist ganz nett und da es auf DirectX aufbaut, haben Sie, sobald Sie zu DirectX wechseln, einige Ideen, mit denen Sie die DirectX-Lernkurve viel einfacher meistern können.

Wenn Sie Erfahrung in der 3D-Programmierung wie OpenGL haben und wissen, wie man eine COM-Programmierung durchführt, würde ich DirectX 11 empfehlen. Alles andere als die neueste Version ist veraltet, und jede Erfahrung, die Sie damit machen, ist nützlich für eine kürzere Zeitspanne.

Andererseits kommt echte Erfahrung aus der Vielfalt. Ich empfehle Ihnen daher, sowohl DirectX und OpenGL als auch XNA zu erlernen und so viele APIs wie möglich zu verwenden. Auf diese Weise haben Sie ein abstraktes Wissen darüber, wie 3D-Programmierung mit verschiedenen Werkzeugen funktioniert, und können für jeden Auftrag das richtige Werkzeug verwenden.


quelle
2

Ich empfehle DX11 oder DX10. Der Unterschied ist sehr gering. Mit DX11 können Sie einfach mehr tun (Hardware-Tessalierung, bessere GPGPU, Ausgabe auf mehrere Texturen im Pixel-Shader ...). DirectX 9 hat eine andere Architektur und ist im Moment wenig veraltet. Wenn Sie nach der aktuellen Spieleentwicklungsbranche fragen: Für aktuell entwickelte PC-Spiele ist DX9 tot.

Aber ich muss sagen:
API ist mir egal. Wenn Sie erst einmal richtig verstanden haben, wie Grafiken funktionieren, dauert das Erlernen einer neuen API maximal einen Monat. Noch kürzere Zeit.

Notabene
quelle
3
DX9 ist nicht veraltet. Es gibt immer noch eine Menge potenzieller Benutzer auf XP. Es kann nicht mehr in der Entwicklung sein und wird in den nächsten Jahren veraltet gehen werden, aber für jetzt ist es nicht.
Die kommunistische Ente
1
@thecommunistduck Ich stimme zu, aber DX9 ist total veraltet, um es zu lernen. Denn ein Anfänger, der es jetzt lernt, wird es gut kennen ... es wird veraltet sein. Und sicher habe ich es in meiner Antwort schlecht gesagt.
Notabene
-5

Ich habe gehört, dass DX9 mit Win XP System ein Single Core System ist. Es ist alte Technik. Ich empfehle dir dx11.

seo
quelle
3
Diese Antwort fügt nichts Produktives hinzu, und es ist unklar (und möglicherweise falsch und irreführend), was Sie in Bezug auf ein "Single-Core-System" vorschlagen.
1
Plus "Ich habe gehört, dass ..." ist keine glaubwürdige Quelle für Beweise (oder so ziemlich alles, wirklich).
Maximus Minimus