Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich denke mal, die Befehle glPushMatrix und glPopMatrix sind dir ein Begriff, deshalb wundere ich mich warum du diese nicht benutzt, da sie auch auf die Texturmatrix angewendet werden können.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Dann wirste deine Texturentransformation entweder direkt in der Displayliste mit speichern müssen, oder du darfst keine Displayliste benutzen und musst die Geometriedaten in jedem Frame roh (sprich glVertex3f) zeichnen!
Aber... wieso geht es denn wenn ich es nicht zurücksetzte??? und sobald ich es am ende zurücksetzte geht es nichmehr... *schaut verwirrt*
Mit glVertex3f jedesmal zeichnen währe nich das optimale.. die Display List hat über 5000 Polygone.. *g* höchstens mit nem VertexArray könnte ich es noch versuchen... *seufzt*
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Also ich habs grad mal nachvollzogen und in nem Testprogramm genauso gemacht, wie ich das oben geschrieben habe, und bei mir funzt das Ganze einwandfrei.
Bist du sicher, dass MTrans einen gültigen Wert hat ??
Immerhin ist entspricht dein zweites Listing (mit dem texturierten Quad) ziemlich genau dem, was du vorher in eine DisplayList compiliert hast - wo's ja offensichtlich funktioniert.
Übrigens kannst du natürlich auch eine DisplayList für die Texturtransformation verwenden - musst sie halt nachher wieder zurücksetzen:
Code:
glNewList(list, GL_COMPILE);
glMatrixMode(GL_TEXTURE);
// Texturtransformation
glBegin(...)
// Code
glEnd();
glLoadIdentity;
glMatrixMode(GL_MODELVIEW);
glEndList;
Und schon hast du alles schön in einer DisplayList gekapselt, ohne dich ausserhalb der DisplayList um die Texturmatrix kümmern zu müssen.
Da ich mal stark annehme, dass deine Standardtexturmatrix der Identitätsmatrix entspricht, kannst du dir glPushMatrix und glPopMatrix auch sparen (ist bei der Texturmatrix auch etwas gefährlich, als bei der standardmäßig nur zwei Rekursionen möglich sind, wenn mich recht entsinne - mag jetzt auch nicht nachsehen).
na ja... die Transformation in die DisplayList mit reinmachen währe unpraktisch.. *g* Will die Textur ja animieren..
Aber, ich hab nach wie vor das problem... wenn ich die TexturMatrix NACHDEM ich mein Objekt gezeichnet habe zurücksetzte, wird auch die TexturMatrix auf meinem Objekt nicht verändert...
Setze ich sie garnicht züruck "funktioniert" es... nur, das sich dann die Transformation auf ALLE Objekte auswirkt... *seufzt*
Au'revoir,
Aya~
PS: SOS.. schick mir doch mal bitte dein Testprogramm was du da gemacht hast.. *schaut lieb*
hab mal ein sample hochgeladen (funktioniert übrigens toll, wer wartet das alles eigentlich ? Phobeus ?). es zeigt sowohl einen würfel mit animierter Texturmatrix, sowie einen ohne animierte textur:
<a href='http://www.delphigl.com/upload/anitexmatrix_mars.zip' target='_blank'>http://www.delphigl.com/upload/anitexmatrix_mars.zip</a>
<Schleichwerbung an> das Ganze übrigens mit meinem Sourcecodegenerator unter <a href='http://http:martinscad.cjb.net' target='_blank'>http:martinscad.cjb.net</a> in fünf Minuten erstellt. <Schleichwerbung aus> (tut mir (nicht wirklich) leid, habe übrigens nicht die leiseste Ahnung, weshalb die zweite URL nicht als solche angezeigt wird ??).
Screenshot spare ich mir, weil nicht wirklich informativ, der zentrale Code liegt in folgender Funktion:
Code:
procedure Tbox.DrawObj;
begin
glMatrixMode(GL_TEXTURE);
glTranslatef(0, TexY, 0);
glCallList(list); // ModelView Matrix brauche ich hier nicht
Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.