LWJGL glfwPollEvents 会阻止 macOS 上的 libGDX 主循环

问题描述 投票:0回答:1

虽然我的基于

Lwjgl3Application
的游戏在 Windows 和各种 Linux 发行版上运行良好,但在 macOS 上却出现黑屏。看起来对
glfwPollEvents
的调用根本没有返回,这会阻塞主循环(请参阅堆栈跟踪)。

我尝试提供一个最小示例,但使用相同版本的新 libGDX 项目不会出现此问题。

Stacktrace(应用程序不会崩溃,但这是它挂起的地方):

invokeV:-1, JNI (org.lwjgl.system)
glfwPollEvents:3438, GLFW (org.lwjgl.glfw)
loop:199, Lwjgl3Application (com.badlogic.gdx.backends.lwjgl3)
<init>:167, Lwjgl3Application (com.badlogic.gdx.backends.lwjgl3)
main:43, DesktopLauncher

版本:

  • java 11
  • macOS 索纳玛 14.5
  • libGDX 1.12.1
  • lwjgl 3.3.3

编辑:

  • 我使用
    -XstartOnFirstThread
    来启动它,因此它在主线程中运行。
  • Toolkit.getDefaultToolkit().systemClipboard
    不会在项目中被调用,也不会被调用 java.awt 或类似的任何其他内容
java macos libgdx lwjgl glfw
1个回答
0
投票

好吧,我一一删除了应用程序的各个部分,然后我能够将其归结为

TexturePacker
,在开始游戏之前,我在
DesktopLauncher
中临时运行了它(仅用于开发目的)。跳过这一步即可解决问题。

我还没有对其进行足够深入的调试,以找到导致问题的

TexturePacker
中的确切位置,但我已经看到它使用了
java.awt
包,该包还提供了 ALUFTW 提到的有问题的
Toolkit.systemClipboard
.

(关于这个问题的接近票和反对票。我同意没有足够的信息来解决这个问题,但也许这个问题和我的答案可以帮助别人解决未来类似的问题,所以我决定不删除它.)

© www.soinside.com 2019 - 2024. All rights reserved.