Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在当前线程中未找到OpenGL上下文,如何修复此错误? 我正在做一个纸牌游戏,目前有一个很好的基础,但是当我在Eclipse中运行时,我遇到了一个错误。我也在使用slick 2d_Java_Opengl_Lwjgl_Slick2d - Fatal编程技术网

Java 在当前线程中未找到OpenGL上下文,如何修复此错误? 我正在做一个纸牌游戏,目前有一个很好的基础,但是当我在Eclipse中运行时,我遇到了一个错误。我也在使用slick 2d

Java 在当前线程中未找到OpenGL上下文,如何修复此错误? 我正在做一个纸牌游戏,目前有一个很好的基础,但是当我在Eclipse中运行时,我遇到了一个错误。我也在使用slick 2d,java,opengl,lwjgl,slick2d,Java,Opengl,Lwjgl,Slick2d,这是控制台的错误 线程“main”java.lang.RuntimeException中的异常:无OpenGL 在当前线程中找到上下文。在 org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)位于 org.lwjgl.opengl.GL11.glGetError(GL11.java:1277)位于 org.newdawn.slick.opengl.renderer.ImmediateModeOGLRenderer.glGet

这是控制台的错误

线程“main”java.lang.RuntimeException中的异常:无OpenGL 在当前线程中找到上下文。在 org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)位于 org.lwjgl.opengl.GL11.glGetError(GL11.java:1277)位于 org.newdawn.slick.opengl.renderer.ImmediateModeOGLRenderer.glGetError(ImmediateModeOGLRenderer.java:387) 在 org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:337) 在 org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:275) 位于org.newdawn.slick.Image.(Image.java:270) org.newdawn.slick.Image.(Image.java:244)位于 org.newdawn.slick.Image.(Image.java:232)位于 org.newdawn.slick.Image.(Image.java:198)位于 Cards.Card.(Card.java:18)

我认为发生错误的源代码(卡类)

包装卡;
导入org.newdawn.slick.Image;
导入org.newdawn.slick.SlickException;
公务舱卡
{
最终整数=52;
Image[]卡=新图像[numCards];
卡(内部c)
{
stringfilelocation=新字符串();

对于(int i=1;i这种错误对于LWJGL初学者来说很常见。OpenGL上下文在创建时会绑定到线程。因此,您只能从同一线程访问此上下文

因为看起来您使用的不是不同的线程,所以可能还有另一个原因。Slick2D似乎需要一个有效的OpenGL上下文来创建它的
Image


因此,我的第一次尝试是在初始化卡片图像之前初始化OpenGL上下文。

我曾经遇到过这种情况,直到我意识到我在OpenGL初始化之前调用了图像加载程序,我才知道该怎么做。请确保您没有在构造函数中使用图像加载程序定义任何变量(或任何其他调用的方法)在OpenGL初始化之前(我所做的)

在初始化OpenGL之前,您是否定义了一个


希望这能有所帮助。

我发现,在设置OpenGL环境之前,您需要初始化显示:)…

在lwjgl 3.x及更高版本中,您可以尝试:
GLContext.createFromCurrent();


如果您使用的是libgdx,那么还有
Gdx.app.postRunnable(…)
在渲染线程上发布
Runnable

一个旧线程,但它可能会帮助某些人。 根据您使用的LWJGL,初始化显示器:

LWJGL 3(使用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);
}

一、 大多数情况下,请忘记Display.create():)

第二种解决方案仅适用于libgdx,而不适用于lwjgl(问题是关于lwjgl)。
if (!glfwInit()) {
   throw new IllegalStateException("Can't init GLFW");
}
try {
   Display.setDisplayMode(new DisplayMode(800, 600));
   Display.create();
} catch (LWJGLException ex) {
   Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}