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?
-
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?