C++ 更新 OpenGL/Glut window

C++ update OpenGL/Glut window

我尝试了一些 OpenGL C++ 培训。 但是我有一个逻辑问题,我该如何更新我的 OpenGL Windows window。 它应该绘制文本 1,然后延迟 1-2 秒,然后绘制文本 2,但现在它同时绘制。谁能帮忙或给个提示。

void text () {  
    wait(1);
    Sleep(1000);
    std::string text_one;                                                                    
    text_one = "Text 1";                                                           
    glColor3f(1,01, 0);                                                                
    drawText(text_one.data(), text_one.size(), 050, 150);

    glutPostRedisplay();

    wait (1)
    std::string text_two;                                                                    
    text_two = "Text 2";                                                           
    glColor3f(1,0, 0);                                                                
    drawText(text_two.data(), text_two.size(), 250, 150);
}

这里主要

int main(int argc, char **argv) {

    // init GLUT and create Window
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(100,100);
    glutInitWindowSize(640,640);
    glutCreateWindow("Test 001");

    // register callbacks

    glutDisplayFunc(renderScene);
    glutIdleFunc(text);

    // enter GLUT event processing cycle
    glutMainLoop();

    return 1;
}

您应该在 renderScene 回调中渲染。它将在您的屏幕刷新率下自动调用。如果你想要一些延迟,你需要在这个回调中实现它(从这个回调调用的函数)。

所以基本上你需要每 1/60 秒重新渲染一次。

如果你想实现简单的延迟,你可以这样做:

void renderScene() {
    time += deltaTime;
    RenderText1();
    if (time > delayTime) 
        RenderText2();
    glutSwapBuffers();
}