C ++更新OpenGL / Glut窗口

时间:2015-09-23 23:09:38

标签: c++ glut

我尝试过一些OpenGL C ++培训。 但我有一个逻辑问题,如何更新我的OpenGL Windows窗口。 它应该绘制文本一,然后延迟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;
}

1 个答案:

答案 0 :(得分:1)

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

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

如果您想实现轻松延迟,可以执行以下操作:

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