我注意到最近当我运行LibGDX游戏时,启动需要20秒,这很奇怪,因为我只加载了一些资源。我在我的主要方法中设置了断点,以确定应用程序卡在哪里,并且当我调用此行时,它被卡住了:
new Lwjgl3Application(new GdxGame(), config);
在Lwjgl3Application构造函数中,它挂在此方法调用上:
initializeGlfw();
看起来像这样:
static void initializeGlfw() {
if (errorCallback == null) {
Lwjgl3NativesLoader.load();
errorCallback = GLFWErrorCallback.createPrint(System.err);
GLFW.glfwSetErrorCallback(errorCallback);
if (!GLFW.glfwInit()) {
throw new GdxRuntimeException("Unable to initialize GLFW");
}
}
}
在此方法中,它会卡在createPrint
和GLFW.glfwInit()
上。打印方法如下所示:
public static GLFWErrorCallback createPrint(PrintStream stream) {
return new GLFWErrorCallback() {
private Map<Integer, String> ERROR_CODES = APIUtil.apiClassTokens((field, value) -> 0x10000 < value && value < 0x20000, null, GLFW.class);
@Override
public void invoke(int error, long description) {
String msg = getDescription(description);
stream.printf("[LWJGL] %s error\n", ERROR_CODES.get(error));
stream.println("\tDescription : " + msg);
stream.println("\tStacktrace :");
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
for ( int i = 4; i < stack.length; i++ ) {
stream.print("\t\t");
stream.println(stack[i].toString());
}
}
};
}
所有这些方法都来自Lwjgl库。有谁知道为什么我的应用可能会遇到这些方法调用?
答案 0 :(得分:0)
我遇到了同样的问题,它接缝与您所在的机器相关联。我用GLFW制作了一个干净的VS15解决方案,并在几台不同的PC上运行它,发现只有我的桌面有这个问题。我还测试了GLFW的LWJGL结合并得到了相同的结果。
[编辑]等待发生在glfwInit()调用
中{{1}}
我在openGL论坛上发现了一篇存档post的帖子,提到了与此类似的问题,但它相当陈旧,可能指的是一个稍微不同的问题。
我可以建议您检查是否从任何防病毒软件中排除了构建文件夹,有时他们会将生成的可执行文件视为潜在威胁,因此可能会很慢,但我不相信这是您的问题。
可悲的是,唯一对我有用的选择是干净安装Windows,虽然当我连接VR耳机并在几天后重新出现时,这个bug神秘地停止了。希望你有比我更好的运气,不必清理安装你的操作系统,如果你找到一个不那么麻烦的解决方案,一定要传播这个词。