【发布时间】:2014-02-22 20:53:38
【问题描述】:
我正在使用 lwjgl 制作一个新的 3D java 游戏,一切进展顺利,但我试图在不同的线程中创建一些 3D 对象,如下所示:
new Thread(new Runnable() {
@Override
public void run() {
for(int x = 1; x < 5; x++) {
for(int z = 1; z < 5; z++) {
Object3D curObject = game.createGrassBlock(game.maps.get(0));
curObject.setPosition(x, curObject.getSize().getY() / 2, z);
curObject.defaultPosition = curObject.getPosition();
Thread.sleep(1);
}
}
}
}).start();
但是,每当我运行该代码时,都会收到以下错误:
Exception in thread "Thread-4" java.lang.RuntimeException: No OpenGL context found in the current thread.
at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)
at org.lwjgl.opengl.GL15.glGenBuffers(GL15.java:114)
at com.gmail.br45entei.base.engine.rendering.Mesh.initMeshData(Mesh.java:43)
at com.gmail.br45entei.base.engine.rendering.Mesh.<init>(Mesh.java:32)
at com.gmail.br45entei.base.engine.rendering.Object3D.updateMeshes(Object3D.java:891)
at com.gmail.br45entei.base.engine.rendering.Object3D.setShape(Object3D.java:942)
at com.gmail.br45entei.base.engine.rendering.Object3D.<init>(Object3D.java:663)
at com.gmail.br45entei.base.game.Game.createGrassBlock(Game.java:293)
at com.gmail.br45entei.base.game.Game.access$1(Game.java:292)
at com.gmail.br45entei.base.game.Game$1.run(Game.java:220)
at java.lang.Thread.run(Unknown Source)
我确信代码在我的 Game.java 中运行良好(但滞后)而不在新线程中调用它,我很难过,因为我不知道为什么新线程不会有相同的 opengl上下文作为主线程...有什么想法吗?感谢阅读!
【问题讨论】:
标签: java multithreading opengl runnable