No OpenGL context found in the current thread, how do I fix this error?

喜你入骨 提交于 2019-11-27 16:03:35

This kind of error is common for LWJGL starters. The OpenGL context gets bound to a thread when it's been created. So you can only access this context from the same thread.

As it does not look that you're working with different threads there might be another cause. Slick2D seems to need a valid OpenGL context for its Image class.

So my first try would be to initialize an OpenGL context before initializing your card images.

This happened to me once, and I couldn't figure out what to do until I realized I was calling the image loader before OpenGL had initialized. Make sure that you aren't defining any variables with an image loader in the constructor(or any other method called) before OpenGL inits(what I did).

Are you defining a Card class before OpenGL is initialized?

Hope this helps.

In lwjgl 3.x and higher, you can try: GLContext.createFromCurrent();

If you're using libgdx, there is also Gdx.app.postRunnable(...) to post a Runnable on the render thread.

Well, what I've found is that you need to init your Display before you set your OpenGL environment :)...

An old thread, but it might help someone. Depending on which LWJGL you're using, init your Display:

LWJGL 3 (uses GLFW):

if (!glfwInit()) {
   throw new IllegalStateException("Can't init GLFW");
}

LWJGL 2:

try {
   Display.setDisplayMode(new DisplayMode(800, 600));
   Display.create();
} catch (LWJGLException ex) {
   Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}

I, mostly, forget Display.create() :)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!