Welche DirectX Version sollte man lernen?



  • Ich habe mir vor ein paar Tagen das Buch 3D Spieleprogrammierung von David Scherfgen bestellt. Es ist noch nicht angekommen, jedoch frage ich mich jetzt ob das die richtige Entscheidung war. Das Buch ist doch schon etwas älter und arbeitet meines Wissens nach mit DirectX 9. Ich verwende Visual Studios 2019 und möchte jetzt DirectX zum Spieleprogrammiereren lernen. Kann ich da noch DirectX 9 verwenden? und wenn ich das jetzt lernen wie schwer ist es auf eine neuere Version umzusteigen. Aktuell ist gerade DirectX 12 oder?



  • DirectX 9 ist schon echt veraltet...



  • was willst du denn überhaupt programmieren? also gegen dinge wie "unreal engine" wirst du alleine sowieso nicht anstinken können, zumal selbst spiele, die mit der unreal engine "zusammen geklickt" werden, in der regel teams aus mindestens 20 leuten erfordern. und als spielzeug reicht directx 9 sicherlich erst einmal aus.


  • Mod

    Was ist denn so der Anspruch? Wirklich ein echtes Spiel zu programmieren? Dann nimm ein fertiges Framework und benutze dieses. Muss ja nicht die Unreal Engine sein, kann ja auch SFML oder SDL für den Anfang sein (und ist ja nicht so, dass man mit denen nicht genau so tolle Sachen machen könnte). Damit kannst du wirklich etwas erreichen, weil du dir all den technischen Kram sparen kannst und dich auf das Kreative konzentrieren kannst.

    Oder willst du die theoretischen Grundlagen der 3D-Grafikprogrammierung in der Praxis nachvollziehen? Dann ist DirectX 9 echt alt. So wie bei dem Grafikmodell von D3D9 denkt man aktuell nicht mehr über 3D Grafik, außer bezüglich der allergrundlegendsten Grundlagen. Gerade der Sprung von 9 zu 10 war riesig. Alles nur noch programmierbare Shader. Hatte man im Ansatz zwar schon bei Dx9, aber ist mit jeder Version extremer geworden. Da kannst du ja mal ein paar Demos mit modernen Methoden programmieren, bis du alle Schritte verstanden hast (kannst ja auch OpenGl nehmen). An die schon existierenden Engines wirst du im Alleingang zwar nie auch nur im Ansatz herankommen, aber dann verstehst du sie. Und mit der nächsten Version ist dann alles Wissen wieder veraltet 🙂

    Oder einen Raytracer in Software schreiben. Das ist dann zwar auch nicht praxistauglich, aber interessantes Wissen, das nicht veraltet.



  • Als erstes danke an euch, die eine Antwort parat hatten. Ich möchte nicht unbedingt riesige Spiele erstellen. Mir ged es natürlich auch um das fertige Spiele aber hauptsächlich fasziniert mich einfach das Programmieren und die verschiedensten Sachen die man damit erstellen kann. Ich habe jetzt zuvor auch das Buch C++ für Spieleprogrammierer gelesen und fand es extrem spannend, vorallem weil zum Schluss auch noch die SDL etwas vorgestellt wird. Wollte aber nicht nur 2d sondern auch 3d Spiele erstellen.

    Edit:
    Ich bin grundsätzlich jemand der gerne zwischen verschiedenen Bereichen hin und herspringt (man könnte auch unentschlossen dazu sagen). Angefangen mit dem Programmieren habe ich mit Microkontroller wie Arduino. Kann leicht sein das ich das auch wieder einmal machen möchte und daher möchte ich eben mehr die Programmiersprache lernen und nicht wie in Unreal Engine mit Blueprints arbeiten.



  • Mit SDL kannst du auch 3D Grafiken machen.
    Zu mindestens für OpenGL liefert es entsprechende Abstraktionen mit (für den OS spezifischen Teil)

    Für DirectX (11) siehe https://stackoverflow.com/questions/53269015/how-can-i-create-direct3d-11-renderer-using-sdl-2-0-9



  • Ich bin nie in die Verlegenheit gekommen, DirectX mal praktisch zu verwenden ....
    Deshalb mein Tipp wenn Du die Wahl hast und unbedingt "low level" dich mit Grafik beschäftigen willst darfst:

    OpenGL

    Ist sicher nicht schwerer wie DirectX, die Schnittstelle ist "gewohntes C" keine COM Api (DirectX 11 + hat noch COM Schnittstellen oder ?)

    Läuft auf mehr Plattformen, auch Desktop Windows. Grad wenn Du selber Embedded Hardware erwähnst 🙂

    Für einfache Spiele mehr als ausreichend.

    Wenn Du dann mehr optimieren willst, kannst Du von dem gelernten den größten Teil (Konzepte) nutzen um Vulkan zu lernen.
    Wobei das meiste soweiso nicht die konkrete Schnittstellen sind und auch auf anderen Plattformen gelten.
    IMHO wichtiger bei "low level" ist zu verstehen, wie Grafikkarten arbeiten, grafik-pipelines funktionieren, dann wird auch eine andere Schnittstelle kein so großes Problem sein.
    Ob die shader in hlsl oder glsl schreibst ...

    Ciao ...



  • @RHBaum sagte in Welche DirectX Version sollte man lernen?:

    Wenn Du dann mehr optimieren willst, kannst Du von dem gelernten den größten Teil (Konzepte) nutzen um Vulkan zu lernen.

    Das kommt wohl sehr darauf an welche OpenGL Version und welche Funktionen man verwendet. Mit klassischem OpenGL Wissen fängst du bei Vulkan soweit ich weiss quasi nichts an.



  • Da hasst Du natürlich Recht, ich bin davon ausgegangen, das wenn wer heut damit anfängt, intermediated Rendern lernt und nicht die "fixed pipeline".
    Ok, sollte man dazu sagen: OpenGL > 3.2 (Core Profile) oder OpenGL ES >= 2.0

    Ciao ...


Log in to reply