GLFW 的线程设置

Ryu*_*aki 6 java multithreading lwjgl glfw

我开始使用新的 Lwjgl 3,它使用 GLFW 进行显示/鼠标/键盘处理,我真的很喜欢它!然而今天我撞到了一块砖。我有一个简单的渲染动画,但是当我拖动屏幕时它停止渲染,直到我再次放手。


根据:http : //www.glfw.org/faq.html
问题是由windows引起的。

3.5 - 为什么当我移动或调整窗口大小时我的应用程序会冻结?

Windows 事件循环被某些操作阻止,例如拖动或调整窗口大小,或打开窗口菜单。这是 Windows 设计的一部分,GLFW 无法更改。如果您希望在此类操作期间继续渲染,则应从辅助线程进行渲染。

-- http://www.glfw.org/faq.html


我以前在 Java 中做过多线程的事情。但我不确定在这种情况下它自己的线程中有什么。我应该在单独的线程中使用 opengl 代码和 GLFW 代码吗?我也很难想出一种方式来表达我的担忧。

A S*_*ich 3

据我所知,唯一真正的限制是 GLFW 需要位于应用程序的主线程中。这是 GLFW 的操作系统事件队列所在的位置,也是 glfwPollEvents 和 glfwWaitEvents 需要位于主线程中的原因。

OpenGL 渲染可以从它自己的线程完成。glfwMakeContextCurrent 将 OpenGL 上下文与进行该调用的线程联系起来。如果您的渲染函数在它自己的线程上运行,只需确保更新上下文(如演示中所示)。

LWJGL 论坛主题:[已解决] LWJGL3 未按预期进行线程处理

上述链接中引用的 LWJGL3 多线程演示