GLUT animation leads to 100% utilization of 1 core when the window is invisible
我开发了一个Python程序,该程序使用PyOpenGL和GLUT进行窗口管理以显示动画。为了使动画以最快的帧速率运行,我设置了
1 | glutIdleFunc(glutPostRedisplay) |
根据建议,例如在这里。
效果很好,我得到了稳定的60 FPS,CPU负载也很少。
但是,一旦该窗口被另一个窗口隐藏,一个CPU内核就会跳至100%的利用率。
我怀疑在窗口可见时,
我试图通过跟踪可见性(通过
1 2 3 | if not visible: time.sleep(0.1) return |
但是,此效果不理想。
这里发生了什么,我该如何避免?
我在这里找到了解决方案,
一旦知道,就很明显:当窗口不可见时,将
1 2 3 4 5 | def visibility(state): if state == GLUT_VISIBLE: glutIdleFunc(glutPostRedisplay) else: glutIdleFunc(None) |