Problem DX & C++
-
Ich bin mir nicht sicher, aber ich glaube, du hast damit einen Rekord gebrochen. Das ist übrigens nichts, worüber man sich freuen sollte.
-
huh?
-
Alter,um ein Viereck zu malen brauchst du indizierte vertices (also Buffer für beides). Der Code den ich dafür schrieb erzeugte einen Würfel, und der Code war 300 Zeilen lang. WO ZUM TEUFEL LERNST DU DAS?
-
Ich lerne erst DirectX 11 und C++
-
Wenn du erst am lernen bist musst du doch nicht gleich dein eigenes framework bauen :xmas1:
-
Ich muss so schnell wie möglich lernen wie ein profi zu proggen wo kann ich das am besten lernen? sorry das der code so lang ist aber ich hab halt noch wenig ahnung
-
@LePwnerer
Der Code ist halt Overkill für jmd. der gerade erst lernt die ersten Schritte zu machen.
Vergiss die ganze Aufteilung in verschiedene Objekte/Klassen, und spiel dich erstmal mit den D3D Funktionen. Lern erstmal gehen, bevor du versucht nen Marathon zu laufen.Und der Code ist wirklich etwas gross um ihn hier zu posten.
Wenn du es nicht auf das Wesentliche zusammenkürzen kannst (z.B. weil du überhaupt gar keinen Anhaltspunkt hast wo der Fehler liegen könnte), dann ist es vermutlich besser wenn du einfach ein ZIP File irgendwo hochlädst, wo das ganze Projekt drinnen ist. (Inklusive .vcproj/.sln Files, halt alles was man braucht um das Ding zu bauen.)
-
ja danke!
NAja ich versuchs aber alle tuts hauen einem das und das vor selbst beginner guides sind so derb, beispiel: " Nun erstellen wri die klasse zum rendern ...bla bla bla... dafür binden wir dxd3whatever ein und erstellen D3DXMATRIX und blah und blah und ich hba keinen plan was was bewirkt oder wie ich was zusammenbasteln soll... =_= *headspin*
-
hustbaer schrieb:
Der Code ist halt Overkill für jmd. der gerade erst lernt die ersten Schritte zu machen.
Vergiss die ganze Aufteilung in verschiedene Objekte/Klassen, und spiel dich erstmal mit den D3D Funktionen.+1
Bevor du genug Erfahrung hast, ist es dir sowieso unmöglich zu entscheiden, wie du so ein System am besten entwerfen solltest. Allerdings ist deine Aufteilung imo gar nicht so verkehrt.
Ein paar generelle Anmerkungen aber vielleicht zum Code:
- Warum überall diese
Hochfahren()
Methoden und nicht einfach den Konstruktor verwenden? - Macht der public Copy-Ctor dort überall wirklich Sinn? Wenn schon ein Copy-Ctor warum dann nicht auch gleich ein
operator =()
? - Verwend Initialisierungslisten statt Zuweisungen im Konstruktor.
- Verwend den Destruktor statt dieser
Schließen()
Methode, genau dafür ist er da. Dann brauchst du die Pointer auch nichtmehr alle auf 0 setzen. - libs gehören imo in den Projekteigenschaften gelinkt und nicht per
#pragma
im Code. - Ich rat sehr davon ab Deutsch und Englisch zu mischen, aber gut, das ist am Ende Geschmackssache.
- Warum überall diese
-
dot schrieb:
[*] Verwend Initialisierungslisten statt Zuweisungen im Konstruktor.
welchen vorteil hat das, das nicht im konstruktor selbst zu tun? der konstruktor geht ja bei vererbung an sich nicht verloren, und ansonsten würde mir dazu nichts einfallen, was dagegen spräche, das alles im konstruktor direkt zu schreiben.
-
Die Init-Liste gehört doch zum Konstruktor!?
Über die Init-Liste gibst du direkt an welche Konstruktoren für die einzelnen Member aufgerufen werden sollen, gibst also eben direkt an wie die Member initialisiert werden sollen. Im Body des Konstruktors sind sie bereits initialisiert, d.h. ihre Konstruktoren wurden bereits ausgeführt und durch die Zuweisungen dort überschreibst du nun die Werte die initialen Werte.
Init-Liste vs. Zuweisung im Konstruktor sind also zwei fundamental verschiedene Dinge!
Bei primitiven Typen wie int, float etc. macht das natürlich keinen Unterschied, aber viele Klassen z.B. bieten gar keinen Zuweisungsoperator, die Init-Liste ist somit der einzige Weg um solche Member zu initialisieren.
Auch wenn es einen operator =() gibt, so ist es potentiell effizienter die Member direkt richtig zu initialisieren, als sie zu initialisieren (wenn es keinen Eintrag in der Init-Liste gibt wird einfach der Default-Ctor aufgerufen) nur um dann diese Werte gleich zu überschreiben.
-
@anti-freak:
Nochmal Beispielhaft...Init-Liste ist vergleichbar mit
std::string m_string("123"); Foo m_foo(1, 2, 3);
Keine Init-Liste und dann im Konstruktor zuweisen ist vergleichbar mit
std::string m_string; Foo m_foo; m_string = "123"; m_foo = Foo(1, 2, 3);
-
ok, dankeschön
klar gehört die init liste zum konstruktor, nur war mir bisher nicht bewusst, welche vorteile diese mit sich bringt.
gelesen, verstanden, akzeptiert und zukünftig auch umgesetzt