【问题标题】:OpenGL bitmap text fails after drawing polygon绘制多边形后 OpenGL 位图文本失败
【发布时间】:2011-02-04 02:44:28
【问题描述】:

我正在使用 Win32 和 OpenGL 将文本绘制到窗口上。我正在使用wglUseFontBitmaps 的位图字体方法。这是我的主要渲染功能:

glClear(GL_COLOR_BUFFER_BIT);

glPushMatrix();
    glColor3f(1.0f, 0.0f, 1.0f);
    glBegin(GL_QUADS);
        glVertex2f(0.0f, 0.0f);
        glVertex2f(128.0f, 0.0f);
        glVertex2f(128.0f, 128.0f);
        glVertex2f(0.0f, 128.0f);
    glEnd();
glPopMatrix();

glPushMatrix();
    glColor3f(1.0f, 1.0f, 1.0f);
    glRasterPos2i(200, 200);
    glListBase(fontList);
    glCallLists(5, GL_UNSIGNED_BYTE, "Test.");
glPopMatrix();

SwapBuffers(hDC);

如您所见,它非常简单,唯一要做的就是绘制一个四边形并绘制文本“Test.”。但问题是绘制多边形似乎会弄乱我尝试在它之后执行的任何文本操作。如果我将文本绘图功能放在多边形之前,则文本和多边形都可以正常绘制。我这里有什么遗漏吗?

编辑:此问题仅在窗口以全屏模式运行时发生,ChangeDisplaySettings。有什么理由会这样吗??

【问题讨论】:

  • “搞砸”是什么意思?不显示,乱码,什么?
  • 文本根本不显示。

标签: opengl winapi


【解决方案1】:

我知道这可能是一个很晚的回复,但我遇到了这个问题,正在寻找这个确切问题的答案。我尝试在多边形上绘制文本的方式略有不同。我有一个看起来像这样的方法:

glClear( GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
glRasterPos2f( pX, pY );

glPushAttrib( GL_LIST_BIT );
glListBase( base - 32 );
glCallLists( length( pText ), GL_UNSIGNED_BYTE, PChar( pText ) );
glPopAttrib();

我尝试像这样在上面绘制一个多边形和文本:

glPushMatrix();
glBegin(GL_QUADS);
  glColor( 1.0, 0.0, 0.0 );
  glVertex2f( fX, fY );
  glVertex2f( fX + fWidth, fY );
  glVertex2f( fX + fWidth, fY + fHeight );
  glVertex2f( fX, fY + fHeight );
glEnd( );
glColor( 0.0, 1.0, 0.0 );
Text( 100, 100, fCaption );
glPopMatrix();

但是,与您的问题类似,只有文本会绘制,或者在某些情况下(在稍微移动 Text 方法之后)什么都不会绘制。我意识到这个方法有

glClear( GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT );

在我绘制多边形之后和在我绘制文本之前显然清除了缓冲区......这是一个非常愚蠢的错误,虽然我无法识别您提供的代码中的任何类似代码,但它可能在其他地方.无论哪种方式,如果您只是从Text 方法中清除glClear 方法,这段代码将对您有所帮助。希望这对处于类似情况的其他人有所帮助或可能有所帮助。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2023-03-27
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多