Zuweisung nicht ausgwführt?



  • Hallo zusammen!

    Ich arbeite im Moment an einem 3D Spiel mit OpenGL.
    Ich weiss, ich bin hier nicht im Spiele Abschnitt,
    da es sich nicht um etwas Spielespezifisches handelt.
    Das Projekt schreibe ich mit Visual Studio in C++.
    Das Programm soll ein File(XMF) mit einer vorgeschriebenen Struktur einlesen
    und die eingelesenen Daten mit OpenGL ausgeben.
    Die Struktur des XM-Files ist einfach.

    mshn <nummer von meshen, muss mindestens 1 sein>
    objn <nummer von objekten, muss mind. 1 sein>
    teln <nummer von teleportern, muss mind. 1 sein>
    savn <nummer von savepoints, muss mind. 1 sein>
    
    type <typ (level,mesh,obj,tele oder save)
    name <name>
    position 0.0f,0.0f,0.0f
    rotation 0,0,0
    scale 1.0f,1.0f,1.0f
    path <path zum wavefront-obj file>
    end <typ>
    
    usw...
    

    Nun verwende ich als 3D modelle wavefront OBJ dateien und einen Importer.
    Als Klassen habe ich:
    GameVector(unwichtig)
    GameObj(verwaltet die koordinaten, das mesh und stellt zeichenfunktionen zur Verfügung.)
    GameWorld(verwaltet die GameObj's und stellt zeichen funktionen, sowie die einlesung eine XMF Datei zur verfügung.)
    Das Programm macht folgendes:
    1)Es startet OpenGL spezifische funktionen.
    2)Erstellt eine Instanz von GameWorld
    3)ruft die Funktion loadMap(char *filen) von GameWorld auf.
    4)Es liest das File in eine Vektor-List ein.
    5)Es benutzt den File-Header um die GameObj- Arrays zu erstellen.
    6)Es liest die Daten ein und Speichert sie in den GameObj-Objekten.
    7)Es geht in den Glut-Mainloop über, wo es die DrawScene() funktion von GameWorld aufruft, die wiederum für jedes GAmeObj die Draw() dunktion aufruft, die Wiederum die Draw() funktion von GLMmodel aufruft.
    Da scheiter ein assert aufruf.
    Offenbar wird das Model-File gar nicht richtig eingelesen.
    Ich hoffe, ihr könnt die leider riesigen Files von mir dank meiner Erklärung durchblicken und mir sagen, was ich denn falsch mache.

    Ich habe im main.cpp noch ein paar kommentar-zeilen geschrieben, um zu zeigen dass die glm.cpp funktioniert. einfach den Anweisungen dort folgen.

    Es tut mir leid, dass ich den Code nicht klein halten kann, aber ich sehe nicht, wo das Problem liegen könnte, deshalb gebe ich alle Dateien mit.

    Die XMF-Files einfach mit dem Notepad öffnen.

    http://xprog.ch/DATA/xmfReader.rar

    Viele Grüsse und HOffnung auf eine baldige Lösung, Amaterasu



  • Hä? Ich glaube hier haben eher wenige verstanden was dein Problem ist. Kannst du das bitte nocheinmal formulieren?

    Ich hoffe, ihr könnt die leider riesigen Files von mir dank meiner Erklärung durchblicken und mir sagen, was ich denn falsch mache.

    Hast du mal gedebuggt? (F9 Breakpoint setzen). Ansonsten spuck mal ein bischen Code aus.



  • Kóyaánasqatsi schrieb:

    Ansonsten spuck mal ein bischen Code aus.

    kannst du downloaden - siehe *.rar

    aber ich hatte keine lust, mich reinzufitzen...

    bb



  • unskilled schrieb:

    aber ich hatte keine lust, mich reinzufitzen...

    Geht wohl den meisten so.

    Amaterasu, wenn du willst, dass sich Leute dein Problem anschauen, musst du es klein halten. Oder eben selbst lösen. Aber es gibt nicht allzu viele, die sich überhaupt etwas herunterladen wollen. Und dann kommt noch die Zeit dazu, die man für das Einlesen in deinen Code braucht. Dann ist man noch nicht mal soweit wie du - schliesslich hat man das Programm nicht geschrieben und wird dementsprechend einige Absichten und Zusammenhänge nicht verstehen. Und anschliessend soll man noch den Fehler finden? Das impliziert massiven Aufwand, den du wohl unterschätzt.

    Aber gut möglich, dass du das auch alleine schaffst. Die Assertion wird dir schon mal über eine nicht erfüllte Precondition Auskunft geben. Zusätzlich hilft dir der Debugger, das Programmverhalten schrittweise nachzuvollziehen und Variablenwerte zu überprüfen. Oft nützt es auch, seinen Fehler durch Auskommentieren von irrelevantem Code nach und nach einzuschränken.

    Auf jeden Fall viel Erfolg... 😉



  • Ja ich habe mir gedacht, dass es vielen zu kompliziert ist das Problem mit so viel code anzuschauen. Ich versuche gerade den Code zu zerteilen und ein minimum zu schreiben. Vlt. löst sich das Problem so dann von aleine oder ich sende euch den code nochmal hoch.

    -Amaterasu



  • So ich habe den code jetzt so gut wie möglich zusammengefasst.
    Er beinhaltet jetzt nur noch das einlesen des Pfades.
    Ich hoffe, dass es euch jetzt leichter fällt, den Code zu lesen.
    Auf die Lösung bin ich leider nicht gestossen.
    In der main.cpp müsst ihr eig. nichts nachschauen, da sollte alles stimmen.
    www.xprog.ch/DATA/xmfReader+.rar

    -Gruss Amaterasu



  • Ich denke, es wird sich wieder niemand angucken - allein schon das runterladen und zu öffnen ist den meisten hier vrmtl zu viel Arbeit...
    Wie wärs, wenn du einfach mal nen paar Breakpoints setzt und selbst guckst, was stimmt und was nicht (mehr)...

    bb


Anmelden zum Antworten