Yes, it is possible: just save the old projection matrix, load the new one and restore the old one when done.
void DrawScene() { Draw2DStuff(); glMatrixMode(GL_PROJECTION); glPushMatrix();
Just be careful with the depth buffer - you may need to play with the depth buffer settings when switching between 2D and 3D rendering so things can be drawn correctly.
source share