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();
}
我尝试了一些 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();
}