Я знаю, что это может быть очень поздний ответ, но я наткнулся на этот вопрос в поисках ответов на эту конкретную проблему. Способ, которым я пытался нарисовать текст поверх многоугольника, немного отличается. У меня есть метод, который выглядел так:
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 );
, который ЯВНО очистил буфер после того, как я нарисовал многоугольник и до того, как я нарисовал текст ... Это была такая глупая ошибка, и хотя я не смог распознать любой подобный код в предоставленном вами коде, он может быть где-то еще , В любом случае этот фрагмент кода поможет вам, если вы просто очистите метод glClear
от метода Text
. Надеюсь, что это помогает или может помочь другим людям, которые находятся в аналогичной ситуации.