This has always worked for me, which is pretty much the same as you have, but i save my matrices so i don’t have to mess with them in any other way. …DRAW 3D…
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho( 0, width, height , 0, -1, 1 );
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity(); CALL FUNCTION TO DISPLAY TEXT
glMatrixMode( GL_PROJECTION );
glPopMatrix();
glMatrixMode( GL_MODELVIEW );
glPopMatrix();
anyway though it might look slightly inefficient, it’s really not, unless you call this thousands of times each frame.
You should only need to do it once per frame (or a few times if your doing some fancy effects that require this).
This has really no effect on performance.