在鼠标事件或窗口调整大小事件之前,glutPostRedisplay不会调用显示回调

时间:2016-03-03 15:18:21

标签: opengl

post我了解glutPostRedisplay API的功能。据了解,此API不会调用回调,而只是设置一个标志,以便主循环下次调用其回调。伪代码是:

void onNewFrame(int x, int y)
{
  // Do calculations
  std::cout << " New Frame " << endl;
  glutPostRedisplay();
}

void display()
{
  std::cout << " Display " << endl;
  // Calculations & opengl operations
}

此处display()是在glutDisplayFunc()中向main()注册的API。在控制台中执行时,我可以看到“New Frame”按预期打印但无法看到“显示”被打印。 glutPostRedisplay() API会设置标志,但在我的情况下,只有在有鼠标事件或窗口大小发生变化时才会执行display()

那为什么会这样呢?是因为主循环没有被执行,直到鼠标事件或窗口调整大小?

1 个答案:

答案 0 :(得分:0)

在进一步调查中,我发现问题在于计算机的功能。当我在高配置PC上重新运行相同的代码时,重新渲染非常快。在这种情况下,经常调用显示功能。