Displaying fixed location 2D text in a 3D OpenGL world using GLUT

前端 未结 3 1595
遥遥无期
遥遥无期 2021-01-05 06:39

I have an OpenGL project which uses GLUT (not freeglut) wherein I would like to display 2D text on the viewport at a fixed location. The rest of my

3条回答
  •  梦毁少年i
    2021-01-05 06:51

    I ran into this same problem using glut to create a model of the solar system. Here's how I solved it: (using your code from above)

    glDisable(GL_TEXTURE_2D); //added this
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    gluOrtho2D(0.0, win_width, 0.0, win_height);
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();
    glRasterPos2i(10, 10);
    string s = "Some text";
    void * font = GLUT_BITMAP_9_BY_15;
    for (string::iterator i = s.begin(); i != s.end(); ++i)
    {
      char c = *i;
      glColor3d(1.0, 0.0, 0.0);
      glutBitmapCharacter(font, c);
    }
    glMatrixMode(GL_PROJECTION); //swapped this with...
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW); //...this
    glPopMatrix();
    //added this
    glEnable(GL_TEXTURE_2D);
    


    You'll note i switched glMatrixMode(GL_PROJECTION); and glMatrixMode(GL_MODELVIEW); near the end. I decided to do this because of this website. I also has to surround the code section with glDisable(GL_TEXTURE_2D) and glEnable(GL_TEXTURE_2D).

    Hope that helps- I worked for me. My solar system uses classes to perform all of this, I'd be happy to share more details upon request.

提交回复
热议问题