OpenGL - Texturen aus BMP nur weis



  • Moinsen...

    LiquidAcid schrieb:

    Das Wissen über die Bitfolge 0xcdcdcdcd und ein Debugger sollten eigentlich genug sein um das Problem zu lösen.

    nicht wirklich... ich komm einfach net drauf... ARGHHHHHHHHH

    mfg!



  • ➡ http://www.samblackburn.com/wfc/technotes/WTN006.htm 💡

    0xCDCDCDCD
    Microsoft Visual C++ compiled code with memory leak detection turned on. Usually, DEBUG_NEW was defined. Memory with this tag signifies memory that has been allocated (by malloc() or new) but never written to the application.

    Frei übersetzt by Sarge schrieb:

    Derartig belegter Speicher signalisiert Speicher, der zwar von der Andwendung per malloc() oder new angefordert wurde, aber auf den _niemals_ schreibend zugegriffen wurde (a.k.a.: etwas darin gespeichert wurde)!

    HTH 🤡 👍



  • Moinsen...

    Thanx, aber dass war ja das, was ich bei der such nach "0xCDCDCDCD" auch schon gefunden hab... nur was mus da rein...

    Mein (MGLgraphicTexture + id)->data is ja ne GLuint Variable, desen Adresse, laut NeHe tutorial, einmal an glGenTextures übergeben wird und einmal die Variable selber an glBindTexture.

    Die Function zum erstellen der Textur siet wie folgt aus:

    // Variable für Texturen
    sMGLgraphicTexture *MGLgraphicTexture;
    
    // Function: Läd Texturen
    bool MGLgraphicTextureLoad(int id, char filename[256]) {
    	bool s = true;
    																					MGLconsoleLog("Load Texture...",0 , 0);
    	// DatenSpeicher festlegen:
    																					MGLconsoleLog("Capture memory for bitmap",1 , 0);
    	AUX_RGBImageRec *t;
    	memset(&t, 0, sizeof(void *) * 1);
    																					MGLconsoleLog("Load bitmap...",1 , 0);
    	char m[256];
    
    	// Bitmap laden:
    	if(t = MGLhelpTextureImageLoad("test.bmp")) {
    																					MGLconsoleLog("Capture memory for texture",2 , 0);
    		// Speicher festlegen:
    		MGLgraphicTexture = new sMGLgraphicTexture;
    																					MGLconsoleLog("Set texture",2 , 0);
    		// Textur einrichten:
    		glGenTextures(1, &((MGLgraphicTexture + id)->data));
    
    		glBindTexture(GL_TEXTURE_2D, (MGLgraphicTexture + id)->data);
    
    		glTexImage2D(GL_TEXTURE_2D, 0, 3, t->sizeX, t->sizeY, 0, GL_RGB, GL_UNSIGNED_INT, t->data);
    
    		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    	} else {
    																					MGLconsoleLog("ERROR during[Load bitmap]",1 , 0);
    		s = false;
    	}
    																					MGLconsoleLog("Load Bitmap done.",1 , 0);
    
    		sprintf(m, "t->data                               %u", t->data);
    		MGLconsoleLog(m,0,1);
    		sprintf(m, "&(t->data)                            %u", &(t->data));
    		MGLconsoleLog(m,0,1);
    		sprintf(m, "(MGLgraphicTexture + id)->data        %u", (MGLgraphicTexture + id)->data);
    		MGLconsoleLog(m,0,1);
    		sprintf(m, "&((MGLgraphicTexture + id)->data)     %u", &((MGLgraphicTexture + id)->data));
    		MGLconsoleLog(m,0,1);
    
    	// Speicher wieder freigeben:
    	if(t) {
    		if(t->data) {
    			free(t->data);
    		}
    		free(t);
    	}
    																					MGLconsoleLog("Load Texture done.",0 , 0);
    	return(s);
    }
    

    Das Struct für die Textur:

    // Struct: MGLgraphicTexture
    struct sMGLgraphicTexture {
    	char name[256];
    	char filename[256];
    	GLuint data;
    };
    

    Und der aufruf:

    glBindTexture(GL_TEXTURE_2D, (MGLgraphicTexture + 0)->data);
    

    Kommt alles von NeHe, mit ausnahme von den Struct und nem Pointer stadt nem Array für die Texturen...

    Aber auch wenn ich nur n Array für die Texturen nehme ändert sich nix!

    mfg!



  • Moinsen...

    ARGLLL!!!

    Keiner kann mir helfen??? Ich begeh selbstmord 🙂

    mfg!



  • IbdKdUuweat schrieb:

    Ich begeh selbstmord

    Ist dann endlich Ruhe hier?

    Bye, TGGC \-/



  • Wenn glGenTextures() MGLgraphicTexture.data nicht gesetzt hat, wird wohl glGenTextures() fehlgeschlagen sein.
    Vermutlich verrät dir nen Aufruf von glGetError() ja warum glGenTextures nicht will ...



  • Moinsen...

    gluErrorString(glGetError()) liefert mir nur ein "invalid operation" zurück...

    das sagt mir überhaupt nix.

    mfg!



  • Jetzt findest du raus welche der GL Funktionen den Fehler erzeugt, nimmst dir das Red/Blue Book und guckst WANN diese Funktionen genau diesen Fehlercode zurückliefert. So schwer kanns doch echt nicht sein...

    cya
    liquid


Anmelden zum Antworten