Ryu*_*aki 6 java multithreading lwjgl glfw
我开始使用新的 Lwjgl 3,它使用 GLFW 进行显示/鼠标/键盘处理,我真的很喜欢它!然而今天我撞到了一块砖。我有一个简单的渲染动画,但是当我拖动屏幕时它停止渲染,直到我再次放手。
3.5 - 为什么当我移动或调整窗口大小时我的应用程序会冻结?
Windows 事件循环被某些操作阻止,例如拖动或调整窗口大小,或打开窗口菜单。这是 Windows 设计的一部分,GLFW 无法更改。如果您希望在此类操作期间继续渲染,则应从辅助线程进行渲染。
-- http://www.glfw.org/faq.html
据我所知,唯一真正的限制是 GLFW 需要位于应用程序的主线程中。这是 GLFW 的操作系统事件队列所在的位置,也是 glfwPollEvents 和 glfwWaitEvents 需要位于主线程中的原因。
OpenGL 渲染可以从它自己的线程完成。glfwMakeContextCurrent 将 OpenGL 上下文与进行该调用的线程联系起来。如果您的渲染函数在它自己的线程上运行,只需确保更新上下文(如演示中所示)。
LWJGL 论坛主题:[已解决] LWJGL3 未按预期进行线程处理