Seltsames Problem mit glLoadIdentity()

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Seltsames Problem mit glLoadIdentity()
Hi!
Ich haenge momentan an einem seltsamen Problem…
Wenn ich in der Szenenbeschreibungsdatei bis auf das Auto und das Terrain keine weiteren (texturierten?) Objekte hinzufuege, gibt es sowohl bei aktivieren des Schattens als auch mit meinen Schweinwerfern (also beide “globalen” Texturobjekte) probleme bei deren ResetGL()-Funktionen…
Genauer: bei der glLoadIdentity() schmeisst es mir einen Invalid Operation - OpenGL-Error… der laut den OpenGL-Seiten nur dann geworfen wird, wenn man zwischen glBegin und glEnd glLoadIdentity aufruft…

ich hab jetzt etwa 3 stunden damit verbracht , dem Fehler auf die schliche zu kommen, aber bislang bin ich noch nicht weiter gekommen… koennte jemand von Euch schauen, ob bei euch das gleiche Problem (zumindest mit dem schatten) auftritt?


ich hatte ähnliche probleme als ich versucht habe im texturematrix mode push und popmatrix zu verwenden, was nicht geklappt hat. hast du vielleicht vergessen bei deinen projektiven texturen in den modelview modus zurückzuschalten?


nein, daran liegt es leider nicht…
das mit dem glPushMatrix() und glPopMatrix() beim texture-matrix-mode liegt daran, dass der TextureStack laut opengl-specification nur die maximaltiefe 2 zu haben brauch, glaub ich zumindest…
ich schalte bei den ganzen texturematix veraenderungen immer zurueck auf den matrix-stack, der davor aktiv war… (ich les den parameter am anfang der setupgl und resetgl aus)… hm, naja, als workaround setz ich halt immer n oelfass rein…


Warum schaust du nicht einfach nach?
http://www.opengl.org/registry/doc/glspec21.20061201.pdf, Seite 298
Maximale Stacktiefe für den Projektions- und Texturstack ist 2, für den MV-Stack 32.

Du kannst ja mal ein glGetIntegerv(GL_MAX_TEXTURE_STACK_DEPTH, &depth) ausführen und gucken, ob die Implementation konform geht…


Naja, weil das ja nicht mein eigentliches Problem ist :slight_smile:
Über das Stacktiefenproblem bin ich anfangs kurz gestolpert, hab mir die Spec durchgelesen, und in meinem Kopf stand dann als Stacktiefe 2, aber bevor ich Unwahrheiten erzähle, wollte ich meine behauptung etwas schwächen, drum das „glaube ich zumindest“
Ich habe übrigens kurzzeitig mit einem externen Stack rumhantiert, aber da kam nur murks raus, also hab ich ab da bei den ResetGLs einfach ein glLoadIdentity() gemacht, wenn ich beim entsprechenden SetupGL die Texturematrix verändert hab… aber das fliegt mir jetzt ja um die Ohren, wenn es keine „richtigen“ (nicht globalen) Texturen in der Szene gibt…


Oh je :-/