我开始使用新的 Lwjgl 3,它使用 GLFW 进行显示/鼠标/键盘处理,我真的很喜欢它!然而今天我碰上了砖头。我有一个简单的渲染动画,但是当我拖动屏幕时,它停止渲染,直到我再次放开。
According to:
http://www.glfw.org/faq.html http://www.glfw.org/faq.html
The problem arises due to windows.
3.5 - 当我移动窗口或调整窗口大小时,为什么我的应用程序会冻结?
Windows 事件循环会被某些操作阻止,例如拖动窗口或调整窗口大小,或者打开窗口菜单。这是 Windows 设计的一部分,GLFW 无法更改。如果您希望在此类操作期间继续渲染,则应该从辅助线程进行渲染。
--http://www.glfw.org/faq.html http://www.glfw.org/faq.html
Ive done multi threaded things before in Java. But im not sure what goes in its own thread for this case. Should I have the opengl code and the GLFW code in seperate threads? I'm also having trouble thinking of a way to word my concerns.
据我所知,唯一真正的限制是 GLFW 需要位于应用程序的主线程中。这是 GLFW 的操作系统事件队列所在的位置,也是 glfwPollEvents 和 glfwWaitEvents 需要位于主线程中的原因。
OpenGL 渲染可以从它自己的线程完成。 glfwMakeContextCurrent 将 OpenGL 上下文与进行该调用的线程联系起来。如果您的渲染函数在它自己的线程上运行,只需确保更新上下文(如演示中所示)。
LWJGL 论坛主题:[已解决] LWJGL3 未按预期进行线程化 http://forum.lwjgl.org/index.php?topic=5827.0
上述链接中引用的 LWJGL3 多线程演示 https://github.com/LWJGL/lwjgl3-demos/blob/master/src/org/lwjgl/demo/opengl/glfw/Multithreaded.java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)