SDL Fehlermeldung bei Rendern



  • Hi!
    Ich habe gerade eine Rendermethode für meinen 3ds Loader entworfen. Doch immer wenn ich diese aufrufe kommt in der Konsole eine Fehlermeldung.

    EDIT:An der Rendermethode kann es nicht liegen. Ich mache irgendwas beim einlesen der Polygon und Vertex Chunks falsch, da dort immer völlig unmögliche Zahlen bei heraus kommen.
    Hier die Methode zum einlesen der Datei:

    bool RBWModel::Load1(char *filename)
    {
    	this->m_mode = ios::in | ios::binary;
    	this->m_file = new ifstream(filename, m_mode);
    	DWORD dwVersion;
    	char *temp;
    	int i=0;
    
    	if(!m_file)
    	{
    		cout << "Datei konnte nicht geöffnet werden" << endl;
    		return 1;
    	} else {
    		cout << "Datei wurde erfolgreich geöffnet" << endl;
    	}
    
    	while (!m_file->eof())
    	{
    		m_file->read((char*)&m_chunkID, 2);
    		m_file->read((char*)&m_chunkLength, 4);
    
    		cout << "Chunk ID: " << m_chunkID << endl;
    		cout << "Chunk Länge: " << m_chunkLength << endl;
    
    		switch(m_chunkID)
    		{
    		case 0x4d4d:
    			cout << "Main Chunk wurde gefunden" << endl;
    			break;
    
    		case 0x3d3d:
    			cout << "3D Editor Chunk wurde gefunden" << endl;
    			break;
    
    		case 0x4000:
    			i=0;
    			do
    			{
    				m_file->read ((char*)&m_temp, 1);
    				m_name[i] = m_temp;
    				i++;
    			}while(m_temp != '\0' && i<20);
    			cout << "Object Block Chunk wurde gefunden\n" << endl;
    			cout << "Das Objekt heißt: " << m_name << endl;
    			break;
    
    		case 0x4100:
    			cout << "Triangular Mesh Chunk gefunden\n" << endl;
    			break;
    
    		case 0x4110:
    			cout << "Vertices Chunk wurde gefunden" << endl;
    			m_file->read((char*) &m_AnzVertices, sizeof(unsigned short));
    			cout << "Anzahl Vertices: " << m_AnzVertices << endl;
    			for(i = 0; i < m_AnzVertices; ++i)
    			{
    				m_file->read((char*)&this->m_pVertices[i].m_position.x, sizeof(float));
    				m_file->read((char*)&this->m_pVertices[i].m_position.y, sizeof(float));
    				m_file->read((char*)&this->m_pVertices[i].m_position.z, sizeof(float));
    			}
    			break;
    
    		case 0x4120:
    			cout << "Faces Chunk gefunden" << endl;
    			m_file->read((char*)&m_AnzPolygons, sizeof(unsigned short));
    			cout << "Anzahl Faces: " << m_AnzPolygons << endl;
    			for(i = 0; i < m_AnzPolygons; ++i)
    			{
    				m_file->read((char*)&this->m_pPolygons[i].a, sizeof(unsigned short));
    				m_file->read((char*)&this->m_pPolygons[i].b, sizeof(unsigned short));
    				m_file->read((char*)&this->m_pPolygons[i].c, sizeof(unsigned short));
    				m_file->read((char*)&this->m_faceFlags, sizeof(unsigned short));
    			}
    			break;
    
    		default:
    			m_file->seekg(m_chunkLength-6, ios_base::cur);
    		}
    	}
    	m_file->close();
    	return 0;
    };
    


  • ff_freak schrieb:

    Hi!
    Doch immer wenn ich diese aufrufe kommt in der Konsole eine Fehlermeldung.

    Stimmt! in meiner magische Kugel seh ich das ganz deutlich... nur kann ich nicht genau erkennen, WAS fuer eine Fehlermeldung das ist... Hmm... vielleicht sollt ich das Ding mal putzen 😕

    EDIT:

    BTW,

    if(!m_file)
        {
            cout << "Datei konnte nicht geöffnet werden" << endl;
            return 1;
        } else {
            cout << "Datei wurde erfolgreich geöffnet" << endl;
        }
    

    tut nicht was du denkst dass es tut! Bedenke: m_file ist ein Zeiger auf ifstream, kein ifstream 😉

    EDIT2: und Speicher den du auf dem Heap belegst, solltest du auch wieder freigeben



  • Die Fehlermeldung:
    Fatal Signal: Segmentation Fault <SDL parachute>

    Die Meldung kommt, weil ich die Datei irgendwie falsch lade. Wenn ich mir die Werte aus der Polygon Struktur ausgeben lasse komen immer komplett falsche Zahlen (z.B. -826373271).
    Siehst du in der Methode zum laden irgend einen Fehler? Ich weiß nicht, was da falsch ist



  • JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!!!!!!!!!!!
    Es funktioniert!!!So geil! Vielen dank für deine Hilfe!
    Der Fehler war, dass ich für die Indices int Vatiablen benutzt habe. Jetzt habe ich es mit unsigned short versucht und es klappt prima!! Was ein Erfolgserlebnis...:)


Anmelden zum Antworten