glTexImage2D erzeugt GL_INVALID_ENUM



  • Hier der Code zu meinem Problem:

    glGenTextures(1, &Groups[i].Material.Textur.ID);								//Textur-ID bekommen
    		glBindTexture(GL_TEXTURE_2D, Groups[i].Material.Textur.ID);						//Textur-ID binden
    		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);	//Min-Filter auf "trilinear"
    		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);					//Mag-Filter auf linear
    		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);						//In s- und t- Richtung wiederholend
    		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
    		int error1 = glGetError();
    		if((ImageType == FIT_BITMAP) && (BPP == 24)){									//Wenn Format=Bitmap und 24 bits per pixel
    			glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0,	GL_RGB, GL_UNSIGNED_BYTE, bits);}	//dann so Textur laden
    		else if((ImageType == FIT_BITMAP) && (BPP == 32)){								//wenn 32 bits per pixel
    			glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0,	GL_RGBA, GL_UNSIGNED_BYTE, bits);}	//dann so laden(Unterschied 4 Komponenten und RGBA)
    		int error2 = glGetError();
    
    		glGenerateMipmap(GL_TEXTURE_2D);												//MipMaps erzeugen
    

    ImageType = FIT_BITMAP und BPP = 24, also wird die obere glTexImage2D-Funktion ausgeführt.
    Bei error2 (Zeile 12) bekomme ich den Wert 1280, also GL_INVALID_ENUM, error1 ist 0.

    Ich habe es auch mit einer 256x256 Textur versucht, falls Texturen ohne 2^n Maße nicht unterstützt werden. Das ist nicht das Problem.

    Wo liegt aber dann das Problem?


  • Mod

    ich glaube es gibt keine hardware die intern RGB texturen verwendet, setzt das interne format in beiden faellen auf GL_RGBA



  • Danke für die Hilfe, rapso!
    Mit GL_RGBA funktioniert es.

    Allerdings funktioniert es mit GL_RGB auch, dagegen mit 4 als Wert nicht. Scheint so, als ob es nur mit den symbolischen Konstanten funktioniert, oder ist das ein Trugschluss?


Log in to reply