Samstag, 10. November 2007
Von Blöcken, Pfeilen, Farben, Koordinaten und einem Buch
semai, 00:13h
Ein herrlicher Tag muss es gewesen sein, als mir in den Sinn kam, eine Klasse zu schreiben, die ich als Grundgerüst für gaaaanz vieles brauchen kann.
Eine Klasse, die zwei VertexBuffer zur Verfügung stellen soll, in welchen ein einfarbiger Würfel gespeichert ist.
Denn wenn ich mit solchen Blocks arbeiten will, wäre es äusserst umständlich, immer alles komplett neu zu berechnen und so, vielleicht hätte es ein paar Vorteile, aber ich als One-Man-Army unter zeitdruck, habe auch schlicht und einfach weder die Zeit, das benötigte KnowHow, noch sonstwas dafür. Also müssen viele Blöcke her!
Doch halt, damals dachte ich an eine Klasse, die einen Würfel zur Verfügung stellt, ich wusste da noch nicht einmal was ein VertexBuffer ist, geschweige zu was ich ihn gebrauchen konnte.
Bevor ich mir also mehr Gedanken darüber machte, legte ich mir kurzerhand ein Buch zu (Ein dickes Lob an meine Buchhandlung, die haben mir das ganz schnell geliefert :) ), welches ich allen Neueinsteigern in MDX in C# empfehlen kann ("Managed DirectX und C#" von Jens Korenow) und lernte mal die Grundzüge, ich bin zwar nicht ganz überall einverstanden mit dem Buch aber falsch oder schlecht ist darin nichts wirklich. Nach kurzer Zeit war ich relativ ernüchtert, keine Möglichkeit gefunden zu haben, um direkt in DirectX irgendwie einen ganzen Würfel zu rendern (Darunter versteht man das auf-den-bildschirm-zeichnen von Dingen), sondern lediglich einen halben, wenn mans geschickt anstellt.
Also überlegte ich erst einmal, was muss meine Klasse können?
-2 Buffers für je einen halben Würfel
-'Umfärben' der Würfel
-Positionieren der Würfel
Nun... das ganze ging danach recht fix, weil ich genau wusste, was ich machen musste und so vom programmiertechnischen her. Nur eins war eklig: Das berechnen der Vertices, die standardmäsig bei all meinen Würfeln exakt gleich sind. Auch da, wo ich die Würfel gemäss der Mapfile erzeuge, sind alle am selben Punkt und haben diesselbe Farbe, also noch nix mit Map... lediglich die Anzahl stimmt.
In einem zweiten Druchgang konnte ich dann bequem die Würfel in einer 3fach-geschachtelten Schleife so umpositionieren, dass sie an den gewünschten Ort kamen und auch in die entsprechenden Farben umfärben.
Letztendlich habe ich aber doch einige Zeit in die Würfelklasse selbst investiert und bin wirklich froh darum, alles, was zu kommentieren war, auch kommentiert zu haben (das überflüssige natürlich ausgenommen). Ich glaube sogar es handelt sich bisher um die sauberste Klasse, die ich jemals geschrieben habe: Zwecksmässig wie auch Syntaxmässig.
Und ja, ich bin stolz auf meine kleine BlockKlasse, auch wenn sie für manchen vermutlich sinnlos erscheint, da mancheiner vielleicht bessere Ansätze kennt oder schon sehr erfahren ist, was das Programmieren betrifft. Nun, für mich ist sie alles andere als sinnlos, mir ist kein besserer Ansatz eingefallen, der so einfach realisierbar ist und ich habe bisher nicht wirklich viel Erfahrung...Aber ich werde daran festhalten.
Für die, die's genauer interessiert:blockbase (cs, 7 KB)
Eine Klasse, die zwei VertexBuffer zur Verfügung stellen soll, in welchen ein einfarbiger Würfel gespeichert ist.
Denn wenn ich mit solchen Blocks arbeiten will, wäre es äusserst umständlich, immer alles komplett neu zu berechnen und so, vielleicht hätte es ein paar Vorteile, aber ich als One-Man-Army unter zeitdruck, habe auch schlicht und einfach weder die Zeit, das benötigte KnowHow, noch sonstwas dafür. Also müssen viele Blöcke her!
Doch halt, damals dachte ich an eine Klasse, die einen Würfel zur Verfügung stellt, ich wusste da noch nicht einmal was ein VertexBuffer ist, geschweige zu was ich ihn gebrauchen konnte.
Bevor ich mir also mehr Gedanken darüber machte, legte ich mir kurzerhand ein Buch zu (Ein dickes Lob an meine Buchhandlung, die haben mir das ganz schnell geliefert :) ), welches ich allen Neueinsteigern in MDX in C# empfehlen kann ("Managed DirectX und C#" von Jens Korenow) und lernte mal die Grundzüge, ich bin zwar nicht ganz überall einverstanden mit dem Buch aber falsch oder schlecht ist darin nichts wirklich. Nach kurzer Zeit war ich relativ ernüchtert, keine Möglichkeit gefunden zu haben, um direkt in DirectX irgendwie einen ganzen Würfel zu rendern (Darunter versteht man das auf-den-bildschirm-zeichnen von Dingen), sondern lediglich einen halben, wenn mans geschickt anstellt.
Also überlegte ich erst einmal, was muss meine Klasse können?
-2 Buffers für je einen halben Würfel
-'Umfärben' der Würfel
-Positionieren der Würfel
Nun... das ganze ging danach recht fix, weil ich genau wusste, was ich machen musste und so vom programmiertechnischen her. Nur eins war eklig: Das berechnen der Vertices, die standardmäsig bei all meinen Würfeln exakt gleich sind. Auch da, wo ich die Würfel gemäss der Mapfile erzeuge, sind alle am selben Punkt und haben diesselbe Farbe, also noch nix mit Map... lediglich die Anzahl stimmt.
In einem zweiten Druchgang konnte ich dann bequem die Würfel in einer 3fach-geschachtelten Schleife so umpositionieren, dass sie an den gewünschten Ort kamen und auch in die entsprechenden Farben umfärben.
Letztendlich habe ich aber doch einige Zeit in die Würfelklasse selbst investiert und bin wirklich froh darum, alles, was zu kommentieren war, auch kommentiert zu haben (das überflüssige natürlich ausgenommen). Ich glaube sogar es handelt sich bisher um die sauberste Klasse, die ich jemals geschrieben habe: Zwecksmässig wie auch Syntaxmässig.
Und ja, ich bin stolz auf meine kleine BlockKlasse, auch wenn sie für manchen vermutlich sinnlos erscheint, da mancheiner vielleicht bessere Ansätze kennt oder schon sehr erfahren ist, was das Programmieren betrifft. Nun, für mich ist sie alles andere als sinnlos, mir ist kein besserer Ansatz eingefallen, der so einfach realisierbar ist und ich habe bisher nicht wirklich viel Erfahrung...Aber ich werde daran festhalten.
Für die, die's genauer interessiert:blockbase (cs, 7 KB)
... comment