任何人都可以帮我让glutBitmapString工作吗?

时间:2014-03-19 21:24:14

标签: c++ string opengl bitmap glut

我正在搞乱OpenGlut库中的glutBitmapString。现在我只想在屏幕上写一个字符串以确保它有效,但我无法让它出现:

const char* texto = "texto";
glRasterPos2i(100, 120);
glColor3f(0.0f, 0.0f, 1.0f);
glutBitmapString(GLUT_BITMAP_HELVETICA_10, (UCHAR*)texto);

我也尝试过for循环中的glutBitmapCharacter,但没有成功。有人能给我一个明确的例子或告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:2)

glRasterPos()位置由当前投影/模型视图矩阵转换。确保它们合理。

或使用glWindowPos2i()绕过它们。

示例:

#include <GL/freeglut.h>

void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    double w = glutGet( GLUT_WINDOW_WIDTH );
    double h = glutGet( GLUT_WINDOW_HEIGHT );
    glOrtho( 0, w, 0, h, -1, 1 );

    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();

    const char* texto = "texto";
    glRasterPos2i( 100, 120 );
    glColor3f( 0.0f, 0.0f, 1.0f );
    glutBitmapString(GLUT_BITMAP_HELVETICA_10, (const unsigned char*)texto );

    glutSwapBuffers();
}

int main( int argc, char **argv )
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
    glutInitWindowSize( 300, 300 );
    glutCreateWindow( "GLUT" );
    glutDisplayFunc( display );
    glutMainLoop();
    return 0;
}