Probleme mit Texture-Mapping - OpenGL
-
Ich versuche seit Stunden eine Textur zu zeichnen, aber es klappt leider nicht, ich habe wirklich schon alles, wirklich alles, ausprobiert. Der Code funktioniert im Minimalbeispiel, aber in meinem Programm nicht.
Statt der Textur wird einfach nur alles weiß gezeichnet, wenn ich mit glColor3ub was einstelle, dann sehe ich das Quadrat auch deutlich.
Da ich absolut keine Ahnung woran es liegt, wollte ich fragen, ob es irgendwie eine Möglichkeit gibt, OpenGL zu fragen was mit der Texture-ID nicht im stimmt? Oder sonstige Debugging-Informationen zu kriegen?
mfg.
-
diese frage wurde hier schon sehr oft gestellt, die suche koennte dir helfen (bevor ich hier wiedermal alles tippe was schiefgehen kann)
-
Hatte vorher schonmal gesucht, jetzt hab ich nochmal gesucht und folgendes gefunden:
http://c-plusplus.net/forum/viewtopic-var-t-is-47110.html
Dort werden die Texturen schon geladen wenn OpenGL noch nicht initialisiert ist. Bei mir ist das aber nicht der Fall, aber vielleicht liegt es ja an meiner Init-Funktion:bool Init(const int width, const int height) { glShadeModel(GL_SMOOTH); glClearColor(1.0f, 1.0f, 1.0f, 0.5f); glClearDepth(1.0f); glEnable(GL_TEXTURE_2D); glDisable(GL_DEPTH_TEST); glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); glViewport(0, 0, width,height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0f, width, height, 0.0f, -1.0f, 1.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); return true; }Weiß jemand Rat?
-
Das einzige mal, dass ich probleme hatte, und die Texturen nicht angezeigt wuren, war als die Texturen nicht richtig geladen wurden, und um zu überprüfen, ob das gut funktioniert hat benutze ich:
if( !glfwLoadTexture2D( "mipmaps.tga", GLFW_BUILD_MIPMAPS_BIT ) ) { glfwTerminate(); return 0; }glfw gibts unter http://glfw.sourceforge.net/
ist sowas wie GLUT denk ich, nur etwas leichter wie ich finde.
-
Wird die Textur überhaupt gesetzt?
Hast du Texturkoordinaten angegeben?
-
Ich vermute, es liegt an nicht gesetzten GL_TEXTURE_MIN_FILTER und GL_TEXTURE_MAG_FILTER. Hat mir auch schon viele male Kopfzerbrechen bereitet ^^
-
Arg.. tut mir Leid, es lag an meiner eigenen Doofheit. Ich habe die Textur in einer Klasse verwaltet, die natürlich im Dtor die Textur wieder löscht. Da ich die Texturen in einer Map verwalte, wurde beim Einfügen die Klasse immer kopiert und dabei die Klasse gelöscht, und so auch die Textur.
Jetzt muss ich das mit der Map lösen, siehe http://c-plusplus.net/forum/viewtopic-var-t-is-182654.htmlIrgendwie ärgerlich, dass OpenGL mir nichts über glGetError mitgeteilt hat.