Muss ich veraltetes DirectX 9 lernen?
-
Hallo! Ich würde gerne starten DirectX zu lernen.
Leider besitze ich nur Windows XP. Das heißt ich muss DirectX 9 lernen?
Wenn ich dann in nem Jahr auf Windows 7 umrüste war ja wieder alles umsonst.
Und ist das BUch 3D-Spieleprogrammierung mit DirectX 9 und C++ von David Scherfgen eines der besten DirectX anfänger Bücher?(auf Deutsch)
Danke
-
Als Anfänger braucht dich der Versionsunterschied nicht großartig stören. DirectX 10 bietet im Gegensatz zu DirectX9 Shader 4.0, der für dich aber sowieso erstmal nicht interessant sein wird. Außerdem ist es ja nicht so, dass der komplette Code der Bibliothek geupdated wird, was heissen soll, dass wenn du fitt in DirectX 9 bist du auch locker in DirectX 10 weitermachen kannst.
-
ok danke dir.
Und bei dem Buch mache ich nix falsch oder?
Weil ich will mich nicht an irgendein genre wie weltraumspiele oder so binden...
-
Flashgott schrieb:
ok danke dir.
Und bei dem Buch mache ich nix falsch oder?
Weil ich will mich nicht an irgendein genre wie weltraumspiele oder so binden...Ich kenne das Buch nicht, jedoch empfehlen viele dieses Buch.
-
Flashgott schrieb:
das BUch 3D-Spieleprogrammierung mit DirectX 9 und C++ von David Scherfgen(auf Deutsch)
Danke
-
Kóyaánasqatsi schrieb:
DirectX 10 bietet im Gegensatz zu DirectX9 Shader 4.0, der für dich aber sowieso erstmal nicht interessant sein wird. Außerdem ist es ja nicht so, dass der komplette Code der Bibliothek geupdated wird
DirectX 10 hat schon ein paar einschneidende Änderungen die auch Anfänger betreffen. Das Wegfallen der fixed function pipeline und der Caps Bits lässt vor allem den Initalisierungscode aus den Büchern nicht 1:1 auf DirectX 10 umsetzen.
Das ist aber trotzdem kein Problem, da zum einen DirectX abwärtskompatibel ist, dass heißt man kann weiter ohne Probleme DirectX 9 nutzen selbst wenn man eine höhere Version installiert hat oder ein aktuelleres SDK nutzt. Zum anderen sollte man aus diesen Büchern vor allem ein allgemeines Verständniss für Spiele-/Grafikprogrammierung bekommen. Wie man das ganze dann in irgendeiner DirectX Version oder sogar in OpenGL umsetzt kann man meistens auch aus der Dokumentation oder Tutorials rauslesen.
-
Ich hab das Buch selbst gelesen es ist nicht schlecht. Allerdings soltle man das Design nicht gerade übernehmen, einige Klassen sind nicht gerade so toll designed. Wenn man davon aber absieht ist das Buch wirklich gut, alles gut erklärt und die Teile die einem evtl noch Fehlen kann man sich ja aus der Doku angeln.
-
ok, ich hab das Buch jetzt und es gefällt mir sehr gut!
Nur befinde ich mich jetzt in einer Zwickmühle:
Ich will nicht mit der TriBase Engine programmieren, da ich ja DirectX lernen will und später vielleicht mal selber eine schreiben. (Natürlich auch keine andere Engine) für eine eigene Engine bin ich aber noch nicht reif genug.
Ich will aber auch nicht 5000 Zeilen unsortierten DirectX Code hinknallen.
Was meint ihr dazu?
Vielleicht einfach paar Klassen im Spiel-Projekt machen (keine Engine) die ähnlich sind wie die Klassen in einer Engine? Diese könnte ich später sogar zu einer Engine zusammensetzen
-
Flashgott schrieb:
Vielleicht einfach paar Klassen im Spiel-Projekt machen (keine Engine) die ähnlich sind wie die Klassen in einer Engine? Diese könnte ich später sogar zu einer Engine zusammensetzen
-
Überlege gerade dasselbe wie der Threadsteller...
Steige bald auf Windows 7 um und möchte in der nächsten Zeit auch mit der 3D-Programmierung anfangen. Bin auch auf selbiges Buch gestoßen zur 3D-Spieleprogrammierung mit Directx 9.
Macht es denn im Moment überhaupt noch Sinn dieses Buch zu Directx 9 zu kaufen?
Oder sollte ich besser auf einen Nachfolger warten?Zu OpenGL gibt es kein aktuelles vergleichbares Buch, oder?
-
Wenn ich dann in nem Jahr auf Windows 7 umrüste war ja wieder alles umsonst.
Wenn das deine Einstellung ist, dann verabschiede dich ganz schnell davon, programmieren zu wollen. Seis nun beruflich oder nur hobbymässig.
-
Barcellona schrieb:
Macht es denn im Moment überhaupt noch Sinn dieses Buch zu Directx 9 zu kaufen?
Oder sollte ich besser auf einen Nachfolger warten?Es gibt im Moment sehr viel zu DX9, sehr wenig zu DX10 (hab da selebr nur 3 Bücher gefudnen) und garnichts zu DX11. Ich selbst hab auch mit DX9 angefangen. Davon hat man durchaus etwas, weil man 1. ein Grundverständniss für Funktionsweisen bekommt und 2. erstmal Grundsätzlich besser im Programmieren. Der Umstieg ist auch nicht so schwer, das SDK verfügt über einige Seiten Informationen was sich von 9 auf 10 und 10 auf 11 geändert hat, was weggefallen udn was neu ist. Ich hab selbst erst D9 gemacht und bind ann mit nem DX10 Buch und einigen tutorials (und viel rumprobieren da einiges nicht 1:1 passt) auf DX11 umgestiegen. Da muß man selbst etwas Flexibel sein sonst wird das nichts.
-
Wenn ich mir das aktuelle SDK zu Directx 11 herunterlade, dann kann ich trotzdem damit die Beispiele zu Directx 9 probieren, oder geht das nicht mehr wegen Änderungen in der Syntax?
Also wenn ich mir das Buch "3D Spieleprogrammierung mit DirectX 9" kaufe, müsste ich dann den SDK für Directx 9 benutzen oder kann ich auch den aktuellen downloaden?
-
Im aktuellen SDK ist DX9 10 und 11 drin, die nutzen jeweils eigene Dateien.
-
Ok, danke Xebov! Dann werd' ich mich die Tage mal ans Werk machen
-
Sorry wenn ich einen veralteten Thread aufgreife aber ich hab da mal ne wichtige Frage?
Und Zwar habe ich mir ein Buch gekauft, was nicht DirectX9.0c vermittelt wie David Scherfgens Buch sondern 9.0 ohne a , b oder c . Ich habe nach dieser Antwort lange gegoogelt und bis jetzt nur herausgefunden das DirectX 9.0c Shader Version 3.0 im Unterschied zu Direct X9.0 Shader Version 2.0 verwendet. Ist das vom Quellcode her tragisch muss ich das Buch jetzt wegwerfen, oder kann ich das 1:1 übernehmen?
Ich würde mich auf ne Antwort freuen.
Vielen Dank im Voraus
-
Bis auf die Shader ändert sich ja nix.
Shader Model 2 vs 3 macht allerdings schon nen Unterschied. 2 kann viele praktische Dinge nicht, kein dynamisches Branching, keine Integer Register etc.
Den Shader-Code in deinem Buch würde ich also ignorieren. Such dir statt dessen lieber online Beispiele/Tutorials zur Shader-Programmierung.
Und verwende am besten gleich Shader für alles - sich noch in die Fixed-Function Pipeline einzuarbeiten macht glaube ich wirklich keinen Sinn mehr.
-
was heisst das genau ich kann das buch zumlernen verwenden? sorry ich bin in directx ein blutiger anfänger wie meinst du das mit der pipeline? was ist das überhaupt?
-
Werri schrieb:
was heisst das genau ich kann das buch zumlernen verwenden?
Ja.
Nur wie gesagt: die Shader-Programme die da drinnen vorkommen sind "veraltet". Das heisst nicht dass sie nicht mehr funktionieren. Es heisst nur dass sie u.U. zu kompliziert sind, bzw. dass die im Buch beschriebenen Limitierungen z.T. nicht mehr existieren bzw. diverse Grenzen (max. so-und-so-viele Befehle pro Shader) sich verändert haben.
Falls du nicht weisst was Shader-Programme sind google es einfach mal. Bzw. wenn du das Buch liest wirst du schon draufkommen. (Es sei denn in dem Buch kommt nichts z.T. Shader vor, das wäre dann doof.)
sorry ich bin in directx ein blutiger anfänger wie meinst du das mit der pipeline? was ist das überhaupt?
Als "Fixed Function Pipeline" bezeichnet man das was Grafikkarten hatten bevor sie "frei programmierbar" wurden. Da konnte man dann für die zu zeichnenden Flächen mehrere Texturen einstellen, jeweils einen eigenen Blending-Mode "zwischen" zwei Textur-Layer, pro Eckpunkt eine Farbe, Lichtquellen definieren etc. Aber alles nur in einem fix vorgegebenen System. Man konnte z.B. jedem Licht eine eigene Farbe und intensität verpassen. Man konnte aber z.B. nicht erreichen dass das Licht je nach Winkel unter dem es auf die Fläche trifft die Farbe ändert, damit das Objekt "schillert" wie ein Fliegenpanzer oder sowas. Man konnte auch nicht beliebig viele Lichtquellen verwenden, und auch nur ganz bestimmte vorgegebene Beleuchtungsmodelle verwenden.
Bzw. halt einfach überhaupt nichts machen was das vorgegebene System nicht angeboten hat.
Dann kamen die neueren 3D Karten die eben frei programmierbare Shader hatten. Und anstatt eben das vorgegebene System zu verwenden, konnte man denen das Programm das sie verwenden sollen um die Farbe eines Pixels zu bestimmen frei vorgeben. Anfangs noch mit argen Limits (keine Schleifen, keine "ifs", sehr kurze Programme etc.), dann mit weniger Limits (kurze Schleifen mit fixer Durchlaufzahl, "simulierte ifs", etwas längere Programme) und mittlerweile gibt es seit in paar Jahren Karten die quasi gar keine Limitierungen mehr haben (beliebige Programme).
(Genau das ist auch der Unterschied zwischen D3D 9 und 9c: D3D 9 bietet nur Support für Shader Model 2 (kurze Schleifen mit fixer Durchlaufzahl, "simulierte ifs", ...) und 9c bietet schon Support für Shader Model 3 (echte Schleifen, echte "ifs", deutlich längere Programme, allgemein weniger lästige Limits).)
Damit diese weiterhin kompatibel zu älteren Programmen bleiben, muss natürlich die Fixed-Function-Pipeline mit ihrem fix vorgegebenen System irgendwie "simuliert" werden. Das macht Direct3D auch ganz toll -- bzw. die Treiber der Karten - weiss nicht wo das genau passiert, auf jeden Fall muss sich das Programm nicht selbst darum kümmern.
In Direct3D 10 wurde Support für die Fixed-Function-Pipeline allerdings schon komplett entfernt, d.h. man kann dort NUR mehr über Shader-Programme arbeiten.
Aus diesem Grund, und da Shader sowieso viel cooler sind, würde ich empfehlen die Fixed-Function-Pipeline in D3D 9 einfach zu ignorieren, und gleich alles mit Shadern zu machen. Und da D3D 9c eben "mächtigere" Shader-Programme kann als D3D 9, ist anzunehmen dass die Shader-Programme in deinem Buch auch etwas veraltet sind.
Der ganze Rest, also wie man mit Texturen, Vertex-Buffern, Index-Buffern umgeht, wie man die ganzen Matrizen verwenden muss etc. ist aber bei D3D 9c genau so wie bei D3D 9. -> kannst du verwenden
-
ich hab leider nicht alles verstanden was du geschrieben wahrscheinlich weil mir die grundlagen zu der 3D Programmierung fehlen. Aber erstmal danke für die ausführliche Auskunft. Du hast wahrscheinlich sehr viel Erfahrung in diesen Bereich und bestimmt eigene Spiele programmiert. Davor habe ich sehr viel respekt und ich hoffe , es ist mein Traum das ich mit viel Gedult, Arbeit und Mühe auch mal dahin komme! Ich hab 2 Bücher einmal das von Scherfgen und eins von Markt und Technik das Dx9 verwendet , Denn ich finde das Buch besser vom Eindruck als wie das von Scherfgen(nichts gegen ihn) . Nur ich finde Bücher besser die sich herantasten und komplett von Null anfangen... . 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.