Problem: Allegro 5 & Opengl text drawing

I have a problem with the allegro 5 and opengl combination

I want to use al_draw_textf for my fps counter. But it is always behind the perspective of opengl.

I use the functions in given sequence.
Can somebody please help me???


1void Renderer::InitOpenGL() 2 { 3 glMatrixMode( GL_PROJECTION ); 4 glLoadIdentity(); 5 gluPerspective(45.0f,(GLfloat)WIDTH/(GLfloat)HEIGHT,0.1f,100.0f); 6 7 glMatrixMode(GL_MODELVIEW); 8 9 glEnable(GL_TEXTURE_2D); 10 glEnable(GL_CULL_FACE); 11 glEnable(GL_DEPTH_TEST); 12 glShadeModel(GL_SMOOTH); 13 14 glDepthMask(GL_TRUE); 15 16 //glPolygonMode(GL_FRONT,GL_LINE); 17 glPolygonMode(GL_FRONT,GL_FILL); 18 19 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 20 }

1void Renderer::RenderBlock(float x, float y, float z, ALLEGRO_BITMAP* texture) 2 { 3 glPushMatrix(); 4 glTranslatef(x,y,z); 5 glBindTexture(GL_TEXTURE_2D, al_get_opengl_texture(texture)); 6 7 glBegin(GL_QUADS); 8 // Front Face 9 //glNormal3f( 0.0f, 0.0f, 1.0f); 10 glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); 11 glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); 12 glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); 13 glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); 14 // Back Face 15 //glNormal3f( 0.0f, 0.0f,-1.0f); 16 glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); 17 glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); 18 glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); 19 glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); 20 21 // All the other faces :D 22 glEnd(); 23 glPopMatrix(); 24 }

1 void Renderer::DrawFPS(ALLEGRO_FONT *font, int fps) 2 { 3 al_draw_textf(font, al_map_rgb(255, 255, 255), 5, 5, 0, "FPS: %i", fps); 4 }


Easiest way will be a brute foce method like:

// Just pseudocode, look up documentationf or all functions.

// right after al_create_display
glGetDoublev(GL_MODELVIEW_MATRIX, modelview)
glGetDoublev(GL_PROJECTION_MATRIX, projection)
glGetDoublev(GL_VIEWPORT, viewport)

// then later, before using Allegro functions
glViewport(viewport[0], viewport[1], viewport[2], viewport[3])

Basically, store whatever is the current transformation setup Allegro uses, then restore to that whenever using Allegro functions.

Alternatively you could check Allegro's source code and just set up the same matrices.


ok thanks for the reaction but is there no way to not brute force it I wass thinking something like making one viewport transparant

or else is there a way to use text in opengl


If you want the text to not be affected by the perspective transform, you need to disable that transform, no matter how you draw it.


Why not just push and pop the relevant matrices?


ok that is something I am going to try :D

Thread #610149. Printed from