【发布时间】:2011-07-28 19:59:36
【问题描述】:
我有一个主窗口,它在屏幕顶部 10% 处有一个过剩 UI,在屏幕底部 90% 处有一个 openGL 世界。每次我的光标开始悬停在 GLUT 部分上时,openGL 渲染都会冻结。它仅在光标退出 GLUT 区域时恢复。
这是因为只要光标悬停在 GLUT 区域上,大概 glutIdleFunc 就不会被调用,因为 glut 不是“空闲”,所以 openGL 的东西不会被渲染。
我已经尝试创建一个新的不相关线程,它只调用显示代码和/或 glutPostRedisplay,但我得到了高达 20 fps 的帧速率,而不是正常方式的 100+ fps。我不知道具体为什么。 (在这个测试中我也禁用了 glutIdleFunc 所以没有空闲函数,只是调用显示的单独线程)
解决这个问题的方法(除了“停止使用过剩”,我将来可能会这样做,但现在我想要一个临时解决方案)?
【问题讨论】:
-
您如何设置屏幕的这两个不同部分,以便实际上就 GLUT 而言它们是“分离的”?
-
GLUT 没有 用户界面。那么你是如何构建这个 UI 的呢?你在使用 GLUI(它使用 GLUT,但它本身不是 GLUT)?
-
抱歉,我使用的是 GLUI,子窗口是使用 GLUI 创建的 *glui = GLUI_Master.create_glui_subwindow(main_window, GLUI_SUBWINDOW_TOP);
标签: opengl interface render glut