我尝试过一些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;
}
答案 0 :(得分:1)
您应该在renderScene回调中渲染。它将在您的屏幕刷新率中自动调用。如果你想要一些延迟,你需要在这个回调中实现它(从这个回调中调用的函数)。
所以基本上你需要每1/60秒重新渲染一次。
如果您想实现轻松延迟,可以执行以下操作:
void renderScene() {
time += deltaTime;
RenderText1();
if (time > delayTime)
RenderText2();
glutSwapBuffers();
}