glPixelZoom verweigert die Zusammenarbeit
-
Hallo,
ich möchte in meiner OpenGL-Anwendung eigentlich nur ein bisschen Debug-Text anzeigen...
Also lad ich mir mit wglUseFontBitmaps() die entsprechende Font-Bitmaps, setze meine orthogonale Projektionsmatrix und rufe die erzeugten Displaylisten auf... Ich möchte aber, wie von 2D APIs gewohnt, die Koordinaten (0,0) in der linken oberen Ecke des Fensters haben.
Diverse Quellen schlagen vor, mit glPixelZoom(1, -1) dass Koordinatensystem einfach umzudrehen... Dummerweise scheint sich OpenGL nicht um diese Angabe zu kümmern :(, der Text erscheint nach wie vor unten im Fenster...void RendererOpenGL::SetOrthoProj() { glPushAttrib(GL_TRANSFORM_BIT); //save matrixmode glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, m_window_width, 0, m_window_height); //we need this to get a coordinate system starting at top left corner glPixelZoom(1.0f, -1.0f); glPopAttrib(); //restore matrixmode } void RendererOpenGL::Test() { ... SetOrthoProj(); glLoadIdentity(); ... //String vorbereiten glColor3f(1.0f,1.0f,1.0f); glRasterPos3i(10,10, -1); m_defaultfont->RenderText(fps_string); //ruft die vorher erzeugten Displaylisten auf ... }Danke schonmal für jedwede Hilfe...
Martin
Achja: WinXP SP2 auf NVidia GF Ti4200, Visual-C++ Express 2005
-
setz die orthogonale projektionsmatrix halt so dass obenlinks 0 ist.
-
Das war ja das erste, dass ich versucht hatte
, aber scheinbar kommt GL mit top<bottom überhaupt nicht klar, es wird auf jeden Fall nix gezeichnet...
Also ich hab's einfach so versucht, falls ich nen massiven Denkfehler fabriziert hab, bitte korrigieren:gluOrtho2D(0, m_window_width, m_window_height, 0);
-
hi,
verwende einfach
glRasterPos2d(iX, iY);da erscheint der Text links oben (musst aber in 2D rendern)
mfg
-
Nein leider nicht...
Das ist das gleiche, das ich mache, nur dass statt float double Werte erwartet werden und die z-Koordinate einfach 0 gesetzt wird...
-
Hab das Problem gerade gelöst...
Ich hab beim initialisieren des Renderers die falsche Fenstergröße (gesamtes Fenster, nicht nur Clientbereich) angegeben, die Zeichenposition lag also irgendwo in Titel- oder Menüleiste...Grüße,
Martin