Muss ich veraltetes DirectX 9 lernen?



  • D3D9 bietet rein prinzipiell einen wesentlich sanfteren Einstieg als aktuelle Versionen und ist zum Anfangen damit potentiell sowieso besser geeignet. Wenn du auch schon Bücher dazu hast, würd ich einfach mal damit anfangen. Schau nur, dass du dich bald an Shader heranwagst und dich nicht zu lange mit der FFP aufhältst. Die alte FFP ist nett, um für den Anfang mal schnell was auf den Schirm zu zaubern, einige Grundlagen zu lernen und sich mit dem ganzen System mal etwas vertraut zu machen. Und es schadet nicht, auch mal gesehen zu haben, wie man das früher so gemacht hat. Heutzutage läuft aber alles über Shader. Auch wenn der ganze Shaderkram zuerst mal etwas einschüchternd wirken kann: In Wirklichkeit ist das alles nicht so kompliziert, wie es aussieht und Shader machen die Dinge am Ende des Tages nicht nur wesentlich flexibler, sondern tatsächlich auch sehr viel einfacher, wenn man sie mal verstanden hat...

    D3D10 kannst du vergessen; wenn du mit D3D9 soweit bist, dass du etwas Erfahrung mit Shadern gesammelt hast, kannst du auf D3D11 umsteigen. D3D10 zu benutzen, wäre sinnlos, da D3D11 alles hat, was D3D10 hat (die API sieht auch praktisch gleich aus, nur dass alle 10er durch 11er ersetzt wurden) und noch viel mehr und zusätzlich noch abwärtskompatibel zu schwächerer Hardware ist. Aus heutiger Sicht, könnte man D3D10 als ein halbfertiges D3D11 betrachten...

    Der Link dürfte dich interessieren: http://www.spieleprogrammierer.de/11-buch-3d-spieleprogrammierung/16038-software-update-alle-projekte-aus-dem-buch-3d-spieleprogrammierung-für-visual-cplusplus-2010-neues-directx-sdk/



  • @dot
    OK, stimmt auch wieder, zum Einstieg ist die Fixed-Function-Pipeline gut.
    Halt nicht all-zu-lange damit aufhalten, macht keinen Sinn FFP-Experte zu werden.

    ----

    @Werri

    ich hab leider nicht alles verstanden was du geschrieben wahrscheinlich weil mir die grundlagen zu der 3D Programmierung fehlen.

    Vermutlich. Macht aber nix, fang einfach mal an. Dann lernst du die Sachen Schritt für Schritt kennen. Das wird schon.

    Du hast wahrscheinlich sehr viel Erfahrung in diesen Bereich

    Ich würde sagen "ein wenig". "Viel" haben andere.

    und bestimmt eigene Spiele programmiert.

    Ja, allerdings keine wirklich tollen, und auch keines mit D3D. Dafür aber eine schöne GUI mit D3D. dot ist da glaub' ich wesentlich fitter als ich, sowie auch einige andere hier.

    Also könnte ich doch so machen ich nimm das veraltete Buch zum lernen und wenn ich bei Shader angekommen bin dann könnte ich mir die nötigen Infos ja von Scherfgens Buch holen er behandelt ja DirectX9.0c.

    Ja, könntest du. Oder du fängst dann an zu googeln. Oder beides. Muss nicht immer ALLES aus einem Buch kommen.

    Auf jeden Fall ... sei auf der Hut. Viele Bücher eignen sich zwar gut zum Anfangen, sind aber genaugenommen voll von schlechtem Code.
    Sei also offen für neues wenn du das Buch durch hast, und geh nicht davon aus dass das was du im Buch gelesen hast unbedingt "good practice" ist.

    Besorg' dir vielleicht zusätzlich 1-2 wirklich gute C++ Bücher zum Thema Stil/Best-Practices/etc.
    Mein Vorschlag: C++ Coding Standards (Sutter) und Effective C++ (Meyers)
    (BTW: weiss jemand wie gut die deutschen Übersetzungen von denen sind? Ich hab' nur die englischen...)

    Muss nicht gleich sein, aber wenn du das Buch durch hast, und an einem Punkt angekommen bist, wo du weisst dass du die Sache mittelfristig fortsetzen willst (im Gegensatz zu aufhören weil es dir keinen Spass mehr macht) ... dann wären die angesagt.

    Da drinnen findest du nämlich viele gute Hinweise und Erklärungen zu Sachen die leider viele Authoren von Spieleprogrammierungsbüchern ... sagen wir mal freundlich: nicht so genau nehmen 🙂



  • danke dot und huasbaer , jetzt kann ich endlich die beispiele nutzen aber bei mein veraltetes buch habe ich probleme ich habs so gelöst das ich Visual 2008 und DIrectX August 2007 SDK hab fünf verschiendene SDKs um ein kompatibeles zu finden ich frag mich wie ich es update so das die vc6 projekte bzw die konvertierten projekte zu 2008 zu 2010 laufen. Ich will euch jetzt nicht mit fragen nerven wo ihr denkt kennt der Junge kein googl, nur wenn man mal die Chance jmd kennenzulernen der sich schon gut auskennt, neigt man dazu ihn mit fragen zu löchern, aber okay noch eine frage und zwar wisst ihr was sich gegenüber den neuen sdk juni2010 geändert hat bei den projekten findet er die dmusici.h und dmusicc.h nicht. Ich weiss das durch googlen es was mit DirectMusic zutun haben muss. Aber ich versteh es nicht das sind doch Dx9 Projekte? Ich meine dinput8.lib und einige andere existieren nicht mehr in Juni 2010 SDK aber wie mach ich die kompitabel oder soll mir das erstmal scheiss igeal sein und ich bei den August SDK bleiben und mit Visual 2008 weitermachen?



  • Ich verwende für D3D9 das August 2008 SDK: http://www.microsoft.com/en-us/download/details.aspx?id=22508
    (Frag mich nicht wieso, hab einfach seit damals nimmer upgedated)

    Geht mit VS 2005 und VS 2008 super. dinput8.lib ist da auch noch dabei. dinput8.lib findet sich ansonsten aber auch in den neuen Windows SDKs (DirectInput wurde vom DX SDK ins Windows SDK übersiedelt).

    Neuere SDKs müssten aber genau so gut gehen, nur dann eben kombiniert mit einem ebenso neuen Windows SDK.

    Das letzte SDK mit DirectMusic Support scheint wohl das Summer 2004 Update zu sein (=das "DirectX 9.0c SDK"): http://www.microsoft.com/en-us/download/details.aspx?id=21416

    DirectMusic wurde von MS abgewürgt, keinerlei Support mehr. Ab besten nicht mehr verwenden. Sonst würde ich empfehlen trotzdem ein neueres SDK zu verwenden und einfach nur die paar benötigten DirectMusic Files aus dem Summer 2004 Update zu kopieren.
    (Einfachste Möglichkeit dranzukommen: Summer 2004 Update runterladen & installieren, DirectMusic Files suchen & rauskopieren, Summer 2004 Update wieder de-installieren)

    ps: nicht vom "Update" im Namen verwirren lassen, das ist schon ein vollständiges SDK



  • Direct3D ist so ziemlich das einzige, was von den historischen Teilen von DirectX noch üblich ist. DirectDraw, DirectPlay, DirectInput, DirectSound, DirectMusic, ... gibts alles nicht mehr (bzw. sind bestenfalls deprecated). Verwend ein aktuelles SDK, konzentrier dich auf Direct3D und vergiss den anderen Kram einfach.



  • mach ich was ich eig wissen wollte wie ersetz ich die dmusicii so das die auf den aktuellen sdk laufen ich hab gelesen das DirectXAudio die header enthält aber das neue sdk hat die header nicht wie ersetz ich die, mit was ? Wer enthält jetzt die funktionalität?

    LOL wartet mal wenn das letzte SDK 2004 DirectMusic enthält... Warum kann ich es mit August 2007 kompilieren und warum sind die dmusicii.h und dmusic.h da noch vorhanden?



  • Hi Leute,

    ich möchte mich jetzt in meiner Ausbildung zum Fachinformatiker
    mit der 3D-Programmierung in C++ beschäftigen und suche seit Tagen
    ein gutes Buch zu DirectX 9 oder 11. Aber zu DirectX 11 finde ich
    kein gutes Lesewerk (das Buch zu DirectX 11 von Susanne W. soll laut
    den Rezessionen nur eine schlechte Kopie der Doku sein...), jedenfalls
    habe ich mich bisher auf das Buch (http://goo.gl/N6GHU) von
    David S. fixiert, da viele sagen, es sei gut. Nur hätte ich ein paar
    Fragen zum Buch, bevor ich es mir kaufe.

    1. Lohnt sich der Einstieg in DirectX 9 im Jahre 2012 noch?
    2. Sie Beschreibung zum Buch ist auf einigen Seiten unterschiedlich,
    mitunter ist die Rede vom Bau einer eigenen Game-Engine "TriBase" oder
    es wird beschrieben das man die "TriBase" Game-Engine nutzt und somit
    von dieser abhängig ist. Programmiert man nun im Buch eine eigene
    Game-Engine oder lehrt der Autor stattdessen seine eigene (was für mich
    ein No-Go wäre)?

    P.S.: Sorry, dass ich mich hier einfach einmische und euch mit Fragen löchere.



  • Werri schrieb:

    LOL wartet mal wenn das letzte SDK 2004 DirectMusic enthält... Warum kann ich es mit August 2007 kompilieren und warum sind die dmusicii.h und dmusic.h da noch vorhanden?

    Vermutlich weil ich mich getäuscht habe, und das Summer 2004 Update doch nicht das letzte SDK ist wo DirectMusic drin ist 😃

    Werri schrieb:

    mach ich was ich eig wissen wollte wie ersetz ich die dmusicii so das die auf den aktuellen sdk laufen ich hab gelesen das DirectXAudio die header enthält aber das neue sdk hat die header nicht wie ersetz ich die, mit was ? Wer enthält jetzt die funktionalität?

    Die Funktionalität von DirectMusic gibt's soweit ich weiss gar nirgends mehr. MS hat wohl entschieden dass es ein Schuss ins Ofenrohr war.



  • dot schrieb:

    Direct3D ist so ziemlich das einzige, was von den historischen Teilen von DirectX noch üblich ist. DirectDraw, DirectPlay, DirectInput, DirectSound, DirectMusic, ... gibts alles nicht mehr (bzw. sind bestenfalls deprecated). Verwend ein aktuelles SDK, konzentrier dich auf Direct3D und vergiss den anderen Kram einfach.

    Ach geh so kann man das net sagen.

    Mag sein dass DirectDraw, DirectSound und DirectInput deprecated sind, aber es gibt sie auf jeden Fall noch, und zwar als Teil des Windows SDK.
    Bei den dreien sehe ich auch keine Gefahr dass MS den Runtime-Support in absehbarer Zeit einstellen wird, die sind einfach immer noch viel zu weit verbreitet.

    Bei DirectPlay und DirectMusic sieht die Sache dagegen etwas düster aus.



  • Es muss doch irgendwas geben was die funktionalität die directmusic geboten hat ersetzt. Ein anderes Interface eine andere Komponente, was hat den genau DirectMusic gemacht MIDI abgespielt? Dann muss doch irgendwas geben mit der ich das im Quellcode ersetzen kann es handelt sich um dieses Listing http://download1.pearsoned.de/download/download.asp?fileID={049F7C37-5C52-4FDE-98C7-FBEC7B7D5054}



  • Es muss doch irgendwas geben was (...)

    Nein, muss es nicht. Wieso sollte es das müssen?



  • hustbaer schrieb:

    Mag sein dass DirectDraw, DirectSound und DirectInput deprecated sind, aber es gibt sie auf jeden Fall noch, und zwar als Teil des Windows SDK.
    Bei den dreien sehe ich auch keine Gefahr dass MS den Runtime-Support in absehbarer Zeit einstellen wird, die sind einfach immer noch viel zu weit verbreitet.

    Ja, DirectSound und DirectInput gibt es aus Kompatibilitätsgründen noch. DirectSound wird ab Windows Vista in Software emuliert und der einzige Grund, um noch DirectInput zu benutzen, sind wohl Joysticks mit Force Feedback, da es in dem Fall keine Alternative gibt. Was Maus und Tastatur betrifft, rät die MSDN selbst von DirectInput ab und verweist auf Windows Messages oder RAW Input...



  • Ja, ich sag ja nicht dass man das unbedingt verwenden soll.

    Ich sehe aber auch keinen Grund bestehenden Code jetzt unbedingt zu portieren. Seis nun Code den man selbst geschrieben hat, oder auch Code aus einem Tutorial.

    Jetzt noch eine dieser APIs zu lernen wenn man sie noch nicht kann halte ich auch für sinnfrei. Ausgenommen man hat gute Gründe, wie z.B. man muss in der Arbeit grössere Wartungsarbeiten an Programmen machen die eine dieser APIs einsetzen.

    So war das gemeint.



  • dot schrieb:

    hustbaer schrieb:

    Mag sein dass DirectDraw, DirectSound und DirectInput deprecated sind, aber es gibt sie auf jeden Fall noch, und zwar als Teil des Windows SDK.
    Bei den dreien sehe ich auch keine Gefahr dass MS den Runtime-Support in absehbarer Zeit einstellen wird, die sind einfach immer noch viel zu weit verbreitet.

    Ja, DirectSound und DirectInput gibt es aus Kompatibilitätsgründen noch. DirectSound wird ab Windows Vista in Software emuliert und der einzige Grund, um noch DirectInput zu benutzen, sind wohl Joysticks mit Force Feedback, da es in dem Fall keine Alternative gibt. Was Maus und Tastatur betrifft, rät die MSDN selbst von DirectInput ab und verweist auf Windows Messages oder RAW Input...

    du scheinst sehr viel ahnung zu haben, es wäre echt cool wenn ich mich mit dir austauschen könnte! Gehst du in dein msn im benutzerprofil auch mal on oder so??? ich kann dir imm forum keine pm schicken`? Wäre echt cool!



  • Kann ich auch hilfe zu DirectX bekomen dot? ich verstehe die doko nicht...



  • @Werri
    Ich hab kein MSN, du musst mich mit jemandem verwechseln.
    Falls du in die Links in meiner Signatur geschaut hast, die Projekte sind von einem Freund von mir.
    Bei Lichttools hab' ich lediglich den Windows-Port beigesteuert, und beim anderen steht sogar extra dabei "Sehr cooles ASCII Spiel (leider nicht von mir)" um Misverständnissen vorzubeugen.

    PM schicken geht hier tatsächlich nicht, aber man kann Emails an Mitglieder schicken - und das funktioniert auch.

    Private Hilfe per Skype/Chat/... gebe ich auch nicht gerne, da es einfach sehr störend bzw. aufwendig ist. Es mag zwar für den Hilfesuchenden so aussehen als wären das nur ein paar Fragen nebenbei und nicht so schlimm, aber ich weiss aus Erfahrung dass sich Erklärungen zu gewissen Themen oft über Stunden hinwegziehen.



  • nein das verlange ich nicht ich beschäftige mich zwar schon lange mit c++ und jetzt auch mit windows nur das problem ist das ich nirgendswo finde wie ich die funktionalität von directmusic ersetzt directmusic hat glaube midis abgespielt das muss doch mit directx9.0c auch gehen wenn es kein directmusic mehr gibt und es wäre toll wenn jemand der erfahrungen mit den alten directx version hat vielleicht er muss mir keine step by step hilfe geben es reicht mir wenn ich ein englisches tutorial finde ode rhabe was mir die genauen änderungen der versionen damit meine ich in quelltext form nicht wie in msdn geben kann dann würde ich weiter kommen!



  • und ich nicht, nur weil ich türke bin? -.-"



  • Werri schrieb:

    nein das verlange ich nicht ich beschäftige mich zwar schon lange mit c++ und jetzt auch mit windows nur das problem ist das ich nirgendswo finde wie ich die funktionalität von directmusic ersetzt directmusic hat glaube midis abgespielt das muss doch mit directx9.0c auch gehen wenn es kein directmusic mehr gibt und es wäre toll wenn jemand der erfahrungen mit den alten directx version hat vielleicht er muss mir keine step by step hilfe geben es reicht mir wenn ich ein englisches tutorial finde ode rhabe was mir die genauen änderungen der versionen damit meine ich in quelltext form nicht wie in msdn geben kann dann würde ich weiter kommen!

    Zum MIDIs spielen kannst du das uralte MCI verwenden, das wird immer noch unterstützt.
    DirectMusic konnte soweit ich weiss aber wesentlich mehr, und dafür gibt es soweit ich weiss keinen Ersatz.

    Aber spiel doch einfach MP3s? Wieso versteifst du dich darauf dass es unbedingt DirectMusic/MIDI/... sein muss? Ein MIDI File kannst du auch mit nem Software-Synthi als WAV rausrendern und dann nach OGG/MP3/... konvertieren.



  • Emre Yildirim schrieb:

    und ich nicht, nur weil ich türke bin? -.-"

    😕
    Stell mal konkretere Fragen...

    Edit: Ich frage mich, wieso man nicht eine Engine (Irrlicht, Ogre, usw.) zum 3D-Programmieren nimmt.


Anmelden zum Antworten