gpt4 book ai didi

java - GL15在lwjgl里坏了

转载 作者:行者123 更新时间:2023-12-01 15:27:43 25 4
gpt4 key购买 nike

当我尝试调用 lwjgl 中的任何 GL15 函数时,我收到 NullPointerException。该问题是由 GL15.class 中名为 caps 的变量引起的。 Caps 通过以下方式加载:ContextCapability caps = GLContext.getCapability();。然而,在此之后 caps 为空。我想知道这是我初始化lwjgl的方式有问题,还是lwjgl本身有问题。我使用以下代码初始化 lwjgl:

Display.setDisplayMode(new DisplayMode(800, 600));
Display.create();

最佳答案

从代码来看,功能对象似乎存储在非继承的ThreadLocal中。这意味着在一个线程中初始化/设置的功能对象将不可用于其他线程。我怀疑这就是您问题的根本原因。

<小时/>

顺便说一句,GLContext class声称是线程安全的,但我认为不是。如果您查看 getCapability() 方法(在上面的链接页面中)的源代码,它会在没有任何同步的情况下访问名为 fast_path_cache 的私有(private)静态,然后引用字段的对象。如果其他某个线程最近更改了...或者正在更改...它所引用的变量或对象,则该线程可能会看到陈旧且不一致的值。

仅同步执行更新的代码是不够的。 (仅仅在 javadoc 中说代码是线程安全的还不够......)

如果使用此库的人想要向维护者报告此问题,请随时这样做。但请先仔细检查我对代码的阅读!!

关于java - GL15在lwjgl里坏了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9969986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com