【问题标题】:Dispalying Text in MFC application using Opengl使用 Opengl 在 MFC 应用程序中显示文本
【发布时间】:2015-04-23 11:34:36
【问题描述】:

我是 OpenGL 的新手,我正在尝试创建一个包含视口、3d 模型并显示一些文本的简单应用程序。我从未使用过 glut 窗口,并且想使用 MFC 窗口来实现上述功能。视口和 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]);
}

方法3:

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。

【问题讨论】:

  • 失败意味着根本没有文本或显示但位置错误?在您的 renderstring 函数中,作为 xyz 的文本位置传递的值是什么?最好把调用这些renderstring函数的代码贴出来看看。

标签: c++ opengl mfc freeglut


【解决方案1】:

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

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

【讨论】:

  • 谢谢穆泽。我在我的代码中应用了 ModelView Matrix 和 Projection Matrix,reslut 来了。但它适用于 glRasterPos2f(x, y),我如何设置 glRasterPos3f(x, y, z)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 2014-10-28
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多