需要帮助使用 glRasterPos3f (openGL)

Need help using glRasterPos3f (openGL)

我正在尝试使用 OpenGL 创建游戏。我的游戏运行良好,但我想加分。在那里,出现了两个问题:

如果您对我如何修复此问题有任何想法,请随时回答:D。

显示分数的函数代码:

void drawBitmapText(char *string) {  
    char *c;    
    glRasterPos3f(1,1,-1);
    for (c=string; *c != '[=10=]'; c++) {
        glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_10, *c);
    }
}

void AffichageScore(void){ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glLoadIdentity();
    std::string scoreSTR = std::to_string(score);
    scoreSTR = "Score : "+scoreSTR;
    int len = scoreSTR.length();
    char scoreArray[len+1];
    std::strcpy(scoreArray, scoreSTR.c_str()); 
    drawBitmapText(scoreArray);
    glutPostRedisplay();
}

glRasterPos设置的坐标由当前模型视图和投影矩阵转换。

使用glWindowPos直接更新当前光栅位置的x和y坐标,不应用当前模型视图和投影矩阵。但请注意,glWindowPos 的坐标必须是 window 坐标:

void drawBitmapText(char *string) {  
    char *c;    

    glWindowPos3f(0, 0, 0);

    for (c=string; *c != '[=10=]'; c++) {
        glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_10, *c);
    }
}

或者,当调用 glRasterPos 时,您可以通过 Identity matrix 设置当前矩阵:

void drawBitmapText(char *string) {  

    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();

    glRasterPos3f(1,1,-1);

    char *c;   
    for (c=string; *c != '[=11=]'; c++) {
        glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_10, *c);
    }

    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
}