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



从这篇文章中,我了解了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()是在main()中向glutDisplayFunc()注册的 API。在控制台中执行时,我可以看到"新帧"按预期打印,但看不到"显示"被打印。glutPostRedisplay() API 会设置标志,但在我的情况下,display()仅在存在鼠标事件或窗口大小更改时执行。

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

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

最新更新