Also ist mir zwischendurch die Idee gekommen, da ich etwas mit Grafikprogrammierung machen wollte, einen eigenen kleinen Renderer zu programmieren.
Dies ist die allererste PreAlpha, und ist eigentlich nur dafür da, um den Algorythmus zu testen, aber ich will sie euch dennoch nicht vorenthalten, am besten auf die nächste Version warten. Die .exe erzeugt ein Bitmap-File in der Größe 800x600, und Rendert eine blaue Kugel die bei 0,0,0 liegt, die Kamera wurde um 10 Einheiten auf der Y-Achse nach hinten gefahren, und blickt auf die Kugel.
Das BMP heißt testbmp und wird bei jeder Ausführung überschrieben!
Sollte jemand Interesse am lesbarem Algorythmus haben, werde ich ihn auch noch mal in Pseudocode aufschreiben, einfach melden
Anforderungen an PreAlpha2:
Programmierung Objekt Orientiert ausrichten -> Alles schön in Klassen verpacken.
Programmierung Objekt-Name funktionell und leserlich machen.
Programmcode optimieren-> Vorausberechnungen.
Eingabe der Auflösung, Kameraposition, Kugelpostion, Kugelradius, Kugelfarbe.
Eingabe des Bilddateinamens und Überschreiben nur nach Abfrage.
Anforderungen an PreAlpha3:
Berechnung von Schatten
Wer sich für den Algorythmus interressiert:
Berchnung der Richtung eines Strahles
(Hatte irgendwie was anderes im Kopf: vertex = vector)
- Code: Alles auswählen
vertex raydir(kamera k, int j, int i){
float mb = 2.0f/k.aufloesung.breite;
float mh = -2.0f/k.aufloesung.hoehe;
vertex v = ((k.richtung*100.0f)+(k.rechts*(((i+1)*mb-1.0f)*k.sichtfeld.horizonzal))
+(k.oben*(((j+1)*mh+1.0f)*k.sichtfeld.vertikal)));
return v;
};
Berechnung des Abstandes² von der Kugel
- Code: Alles auswählen
float dist2(vertex a, vertex b, vertex c){
float d = 0.0f;
vertex v,w;
v = c-a;
float sqr;
sqr = b.x*b.x+b.y*b.y+b.z*b.z;
float sqr2 = sqrt(sqr);
vertex bb = b/sqr2;
w = v*bb;
d = w.x*w.x+w.y*w.y+w.z*w.z;
return d;
};

