Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 05, 2025 13:42

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Textur Verschieben
BeitragVerfasst: Di Jan 21, 2003 18:16 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Huhu,

wenn ich eine Textur verschieben möchte, ohne alle TexturKoordinaten von hand zu ändern kann ich das ganze ja mit der TexturMatrix machen, ja...?

Code:
  1.   glMatrixMode(GL_TEXTURE);
  2.  
  3.   glTranslate(0,MTrans,0);
  4.  
  5.   glMatrixMode(GL_MODELVIEW);
  6.  
  7.   glCallList(Bla);


MTrans wird ständig erhöht... NUR, jetzt wirkt sich das ja auf ALLES aus, und nicht nur auf die DisplayList "Bla"...

wenn ich es jetzt aber so mache:

Code:
  1.   glMatrixMode(GL_TEXTURE);
  2.  
  3.   glTranslate(0,MTrans,0);
  4.  
  5.   glMatrixMode(GL_MODELVIEW);
  6.  
  7.   glCallList(Bla);
  8.  
  9.   glMatrixMode(GL_TEXTURE);
  10.  
  11.   glTranslate(0,-MTrans,0);
  12.  
  13.   glMatrixMode(GL_MODELVIEW);

dann tut sich rein garnix... dann verändern sich weder die TexturKoordinaten von "Bla" noch von irgendwas anderem...

Hat wer ne Ahnung/Idee was ich da machen kann??

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 18:35 
Offline
DGL Member
Benutzeravatar

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.

Folgender Code sollte also funktionieren :
Code:
  1.  
  2.  
  3. glMatrixMode(GL_TEXTURE);
  4.  
  5. glPushMatrix;
  6.  
  7.   glTranslate(0,MTrans,0);
  8.  
  9.   glMatrixMode(GL_MODELVIEW);
  10.  
  11.   glCallList(Bla);
  12.  
  13.   glMatrixMode(GL_TEXTURE);
  14.  
  15. glPopMatrix;
  16.  
  17. glMatrixMode(GL_MODELVIEW);
  18.  
  19.  

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 18:38 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
huhu,

doch doch.. das hatte ich schon versucht, nur dann ändern sich die Texturen auf der DisplayList ebenfalls nicht.... :(

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 18:41 
Offline
DGL Member
Benutzeravatar

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!

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 18:45 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
mh...

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*

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 18:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
hab's grad mit nem VertexArray versucht... geht auchnet :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 18:56 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
soo... nun hab ich's versucht wenn ich einfach nen Quad jedesmal zeichne... funktioniert genausowenig :((

Code:
  1.       glMatrixMode(GL_TEXTURE);
  2.  
  3.       glPushMatrix;
  4.  
  5.         glTranslate(0,Dolphin.MTrans,0);
  6.  
  7.         glMatrixMode(GL_MODELVIEW);
  8.  
  9.         glBegin(GL_QUADS);
  10.  
  11.           glTexCoord2f(1,1); glvertex3f(1,1,0);
  12.  
  13.           glTexCoord2f(1,0); glvertex3f(1,0,0);
  14.  
  15.           glTexCoord2f(0,0); glvertex3f(0,0,0);
  16.  
  17.           glTexCoord2f(0,1); glvertex3f(0,1,0);
  18.  
  19.         glEnd;
  20.  
  21.         glMatrixMode(GL_TEXTURE);
  22.  
  23.       glPopMatrix;
  24.  
  25.       glMatrixMode(GL_MODELVIEW);


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 19:16 
Offline
DGL Member
Benutzeravatar

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.

Mein Quellcode (Leicht gekürzt) :
Code:
  1.  
  2.  
  3. Texture2.Bind;
  4.  
  5. glMatrixMode(GL_TEXTURE);
  6.  
  7. glPushMatrix;
  8.  
  9.   glTranslatef(0,Rot/100,0);
  10.  
  11.   glMatrixMode(GL_MODELVIEW);
  12.  
  13.   glBegin(GL_QUADS);
  14.  
  15.     ...
  16.  
  17.   glEnd;
  18.  
  19.   glMatrixMode(GL_TEXTURE);
  20.  
  21.   glPopMatrix;
  22.  
  23. glMatrixMode(GL_MODELVIEW);
  24.  
  25.  

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 19:20 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
kannst du mir mal dein TestProg schicken???
ich hab das aus nämlich jetzt 1-1 kopiert, und es geht nicht....

(Aya@Koshigaya.de)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 24, 2003 13:36 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
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:
  1.  
  2.  
  3. glNewList(list, GL_COMPILE);
  4.  
  5.   glMatrixMode(GL_TEXTURE);
  6.  
  7.   // Texturtransformation
  8.  
  9.   glBegin(...)
  10.  
  11.     // Code
  12.  
  13.   glEnd();
  14.  
  15.   glLoadIdentity;
  16.  
  17.   glMatrixMode(GL_MODELVIEW);
  18.  
  19. glEndList;
  20.  
  21.  


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).

Viel Spaß beim Programmieren,

Martin

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 24, 2003 13:41 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
huhu,

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*


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 25, 2003 01:11 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
hallo,

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:
  1. procedure Tbox.DrawObj;
  2.  
  3.  
  4.  
  5.  &nbsp;begin
  6.  
  7.  &nbsp; &nbsp;glMatrixMode(GL_TEXTURE);
  8.  
  9.  &nbsp; &nbsp;glTranslatef(0, TexY, 0);
  10.  
  11.  &nbsp; &nbsp;glCallList(list); // ModelView Matrix brauche ich hier nicht
  12.  
  13.  &nbsp; &nbsp;glLoadIdentity;
  14.  
  15.  &nbsp; &nbsp;glMatrixMode(GL_MODELVIEW);
  16.  
  17.  
  18.  
  19.  &nbsp; &nbsp;TexY := TexY + 0.02;
  20.  
  21.  &nbsp;end;
  22.  
  23.  


viel Spaß beim Programmieren,

Martin

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]