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

Aktuelle Zeit: Fr Jul 18, 2025 20:21

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Projektionsmatrizen wechseln
BeitragVerfasst: Mo Sep 18, 2006 12:21 
Offline
DGL Member

Registriert: So Jan 23, 2005 13:21
Beiträge: 46
Wohnort: Vietnam
Hi!

Ich arbeite gerade an einem Font-Creator bzw. habe ihn gerade fertig gestellt. Funktioniert auch super, aber bin trotzdem auf ein "Problem" gestossen. Für meine 3D Objekte brauch ich natürlich gluPerspective. Leider lässt es sich dort schwer herauszufinden, wo das Font nun ausgegeben wird. Mit gluOrtho2D kann ich ganz einfach einen Text ausgeben, dafür aber ist das dann die falsche Projektionsmatrix für 3D Objekte.

Jetzt frage ich euch, wie kann ich die beiden verbinden?
Kostet die Umstellung der Projektionsmatrix viel Rechenzeit?

Derzeit wird nur bei reshape die Projektionsmatrix (gluPerspective) gesetzt bzw errechnet.
Ich habe folgenden Code in der Fontmethode versucht, weil es mir als logisch vorkamm, aber es wollte nicht so richtig...:

Code:
  1. glPushMatrix();
  2.     glLoadIdentity();
  3.  
  4.     glMatrixMode (GL_MODELVIEW);
  5.     glLoadIdentity ();
  6.     glViewport (0, 0, windowWidth, windowHeight);
  7.     glMatrixMode (GL_PROJECTION);
  8.     glLoadIdentity ();
  9.     gluOrtho2D (0.0, windowWidth, 0.0, windowHeight);
  10.  
  11.     blabla...
  12. glPopMatrix();


windowWidth und windowHeight werden bei reshape verändert um somit immer die richtigen Grössen zu haben.

Danke im Vorraus für eure Hilfe. Falls ihr noch irgendwelche zusätzlichen Infos braucht, dann einfach fragen ;)
lg rb

_________________
"As the enemy went to heaven,
we stayed in hell!"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 18, 2006 13:11 
Offline
DGL Member

Registriert: So Sep 26, 2004 05:57
Beiträge: 190
Wohnort: Linz
Zitat:
Kostet die Umstellung der Projektionsmatrix viel Rechenzeit?

Wenn du das nicht verhältnismäßig oft machst (bei größeren Anwendungen mehrere hundert oder tausend mal je Frame) dann wirst du keinen Unterschied bei der Performance merken.

Zu deinem Code wäre zu sagen, dass du zum einen den Viewport nicht ändern musst. Dies musst du nur machen wenn du beispielsweise nur auf einem Teil des Fensters 3D rendern möchtest, ansonnsten kannst du den bei 2D und 3D gleich lassen.

Zu Beginn deines Code-Blocks ist anzunehmen, dass du im GL_MODELVIEW Matrix-Mode bist (denn darin ist man meistens). Insofern gilt das PushMatrix auch nur für die Modelview Matrix. Um sowohl Modelview als auch Projektionsmatrix nach diesem Code-Block wieder gleich zu haben solltest du das etwa so machen:

Code:
  1.  
  2.    glMatrixMode (GL_PROJECTION);
  3.    glPushMatrix ();   // Projection Matrix speichern
  4.    glLoadIdentity ();
  5.    gluOrtho2D (0.0, windowWidth, 0.0, windowHeight);
  6.  
  7.    glMatrixMode (GL_MODELVIEW);
  8.    glPushMatrix();    // Modelview Matrix speichern
  9.    glLoadIdentity ();
  10.  
  11.    // Im Gegensatz zu deinem Code bist du hier wieder im Modelview-Modus was meistens erwünscht ist.
  12.  
  13.    blabla...
  14.  
  15.    glMatrixMode (GL_PROJECTION);
  16.    glPopMatrix ();   // Projection Matrix laden
  17.  
  18.    glMatrixMode (GL_MODELVIEW);
  19.    glPopMatrix();    // Modelview Matrix laden
  20.  
  21.    // Hier bist du nun wieder im Modelview-Modus was auch in 3D meist erwünscht ist
  22.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 19, 2006 11:55 
Offline
DGL Member

Registriert: So Jan 23, 2005 13:21
Beiträge: 46
Wohnort: Vietnam
danke :)

_________________
"As the enemy went to heaven,
we stayed in hell!"


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]