使用 Opengl 在 MFC 应用程序中显示文本

Dispalying Text in MFC application using Opengl

我是 OpenGL 的新手,我正在尝试创建一个包含视口、3d 模型并显示一些文本的简单应用程序。我从未使用过 glut window 并且想使用 MFC window 来实现上述功能。视口和 3d 模型工作正常,但未显示给定的文本。我已经测试了文本显示工作的基于 glutWindow 的应用程序。因为我不想在我的应用程序中使用 glutwindow 我避免了以下几行

   glutInit(&argc, argv);
    glutInitWindowSize (window_width, window_height);
    glutInitWindowPosition (window_X_position, window_Y_position);
    glutInitDisplayMode (GLUT_RGB);
    glutCreateWindow (window_title);
    glutDisplayFunc (display);

仅使用 MFC 和 OpenGL 我必须显示文本。

方法一:

  /* glPushMatrix();
         glRotatef( -25.0f, 0.0f, 1.0f, 0.0f );
        glTranslatef( -2.5f, -0.7f, 0.0f );    
        lListBase( m_TextID );
        glCallLists( 20, GL_UNSIGNED_BYTE, (const GLvoid*)"welcome" ); 
         glPopMatrix();*/

方法二:

void renderstring2d(char string[], float r, float g, float b, float x, float y)
{
    glColor3f(r, g, b);

    glRasterPos2f(x, y);
    for(unsigned int i = 0; i < strlen(string); i++)
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15, string[i]);
}

方法三:

void renderstring3d(char string[], float r, float g, float b, float x, float y, float z)
{
    glDisable(GL_LIGHTING);
    glColor3f(r, g, b);

    glRasterPos3f(x, y, z);
    for(unsigned int i = 0; i < strlen(string); i++)
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15, string[i]);
}

以上方法我都试过了,都失败了。请帮我显示文字 MFC 应用程序中的 OpenGL。

您使用的是固定管道,所以您必须根据glutBitmapCharacter 使用的坐标系设置ModelView Matrix 和Projection Matrix。

看这个例子: http://www.programming-techniques.com/2012/05/font-rendering-in-glut-using-bitmap.html