gpt4 book ai didi

c++ - 需要使用glRasterPos3f(openGL)的帮助

转载 作者:行者123 更新时间:2023-12-02 10:23:02 25 4
gpt4 key购买 nike

我正在尝试使用OpenGL创建游戏。我的游戏效果很好,但我想添加一个分数。在那里,出现了两个问题:

  • 屏幕开始闪烁(我认为这是glutPostRedisplay()的代码位置的问题)
  • 乐谱正在屏幕上移动

  • 如果您对我可以如何回复有任何想法,请随时回答:D。

    显示分数的功能的代码:

    void drawBitmapText(char *string) {  
    char *c;
    glRasterPos3f(1,1,-1);
    for (c=string; *c != '\0'; 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 设置的坐标由当前的模型 View 和投影矩阵转换。

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

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

    glWindowPos3f(0, 0, 0);

    for (c=string; *c != '\0'; 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 != '\0'; c++) {
    glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_10, *c);
    }

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

    关于c++ - 需要使用glRasterPos3f(openGL)的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59234506/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com