java - GLFW 的线程设置

标签 java multithreading lwjgl glfw

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


根据:http://www.glfw.org/faq.html
问题出现是由于windows。

3.5 - Why does my application freeze when I move or resize the window?

The Windows event loop is blocked by certain actions like dragging or resizing a window, or opening the window menu. This is part of the design of Windows and cannot be changed by GLFW. If you wish to keep rendering during such actions, you should render from a secondary thread.

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


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

最佳答案

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

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

LWJGL Forum topic: [SOLVED] LWJGL3 Not threading as expected

LWJGL3 Multithreaded Demo referenced in the above link

关于java - GLFW 的线程设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31328280/

相关文章:

c# - 线程化缓慢且不可预测?

java - ExecutorCompletionService 缺少 invokeAll 接口(interface)

java - 如何从 java servlet 控制类(运行/停止)

java - 组合游戏中的元素

java - 具有多个服务器实例的 AppEngine JDO 丢失通过 key 获取的实体的事务更新

Java:每次按下仅识别一次按键

Java 从哈希码重新创建字符串

java - 我的第一个 LWJGL 应用程序性能不佳

随机变化的Java变量

java - 如何在Java中使用LWJGL实现扁平化外观(无标题栏)?