I
So,
Ich habe das Problem jetzt allein gelöst.
Jedoch ist mir ein wenig unverständlich, warum funktioniert was ich getan habe. Zum Zeitpunkt, an dem das Problem auftrat, benutzte ich 3 Funktionen aus meiner Klasse. Eine, die die Vertexdaten aus der Datei liest, eine, die ausliest, welche Verts zu einem Face zusammengeschlossen werden sollen und eine, die diese Beiden Daten zu einem Mesh kombiniert. Zuerst habe ich die Funktion auskommentiert, die die eingelesenen Daten kombiniert, doch der Fehler ist geblieben. Dann habe ich die Funktion auskommentiert, die die Facedaten ausliest, und der Fehler verschwand. Der einzige konzeptionelle Unterschied zwischen der Funktion, die die Vertexdaten einliest, und der Funktion, die die Facedaten einliest, ist der, das ich ich für die Fehlerhafte Funktion diese Routine benutzte, um die gesamte Datei in einen String zu schreiben (ich gebe ja zu,dass das wahrscheinlich nicht das gelbe vom Ei ist..):
string load_file(string name)
{
FILE* file;
file = fopen (name.c_str(),"r");
//is the path valid?
if (file!=NULL)
{
char data[1024];
string str;
while(fscanf(file,"%s",data) >= 0)
{
str.append(data);
str.append(" ");
}
//fclose (file);
return str;
}
return "false";
}
Man beachte das auskommentierte "//fclose (file);". Sobald ich diese Funktion auskommentiert habe, funktionierte wieder alles normal. Da ich den Code nicht aufgeräumt hatte, habe ich diese Funktion nur in der "Face-Funktion" benutzt. In der "Vertex-Funktion" habe ich das nicht ausgelagert. Dort habe ich zum Schluss den file aber wieder mit "fclose" geschlossen.
Lange Rede, kurzer Sinn: Wieso muss ich den File das eine mal wieder schließen und das andere mal nicht? (Wenn gewünscht kann ich den Source-code posten, wie oben schon gefragt.)
Mittlerweile habe ich auch eine Funktion geschrieben, die die Normalen ausliest und mit auf den Bildschirm zaubert. Jedoch sieht das Ganze alles andere als normal aus, denn, wie ich gemerkt habe, ist Das Koordinatensystem in Blender (von wo ich meine Exporte fahre) ein anderes als bei OpenGL. Während bei Opengl die Y-Achse nach oben hin verläuft, tut dies Bei Blender die Z-Achse und die Y-Achse verläuft in die Tiefe.
Reicht es da, wenn ich die Werte einfach anderen Achsen zuweise, oder muss ich da mit Vektoren zaubern(alles um 90Grad drehen)? Meine Versuch die Werte der x- und y-Achse zu tauschen war nicht besonders glücklich.....
PS: Ich hoffe ich langweile euch nicht
EDIT: Bild von dem, was ich meine. Geladen ist ein 3D-Kreuz.
http://img15.imageshack.us/img15/508/screengpd.jpg