我正在做一个纸牌游戏,目前有一个很好的基础,但是当我在eclipse中运行它时,我遇到了一个错误。我还使用了光滑的2d。
这是来自控制台的错误。
线程“主”java.lang.RuntimeException中的异常:在当前线程中没有找到OpenGL上下文。在org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124) at org.lwjgl.opengl.GL11.glGetError(GL11.java:1277) at org.newdawn.slick.opengl.renderer.ImmediateModeOGLRenderer.glGetError(ImmediateModeOGLRenderer.java:387) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:337) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:275) at org.newdawn.slick.Image.(Image.java( org.newdawn.slick.Image.(Image.java:244) at org.newdawn.slick.Image.(Image.java:232) at org.newdawn.slick.Image.(Image.java:198) at Cards.Card.(Card.java:18) )
我认为错误发生的来源的代码(Card类)
package Cards;
import org.newdawn.slick.Image;
import org.newdawn.slick.SlickException;
public class Card
{
final int numCards = 52;
Image[] card = new Image [numCards];
Card (int c)
{
String fileLocation = new String ();
for (int i = 1 ; i <= 52 ; i++)
{
fileLocation = "res/cards/" + i + ".png";
try
{
card [i] = new Image (fileLocation); //line
}
catch (SlickException e)
{
e.printStackTrace ();
}
}
}
public Image getImage (int cardlocation)
{
return card [cardlocation];
}
}以前有人见过这种问题吗?我该怎么解决呢?
发布于 2013-01-15 22:16:17
这种错误对于LWJGL启动器来说是常见的。OpenGL上下文在创建线程时被绑定到线程。因此,您只能从同一个线程访问此上下文。
因为看起来您没有处理不同的线程,所以可能还有另一个原因。Slick2D的Image类似乎需要一个有效的OpenGL上下文。
因此,我的第一次尝试是在初始化卡片图像之前初始化一个OpenGL上下文。
发布于 2013-03-24 02:28:06
这在我身上发生过一次,直到我意识到在OpenGL初始化之前我正在调用图像加载器,我才知道该做什么。确保在OpenGL inits之前没有使用构造函数中的图像加载器(或任何其他调用的方法)定义任何变量(我所做的)。
您是否在初始化Card类之前定义OpenGL类?
希望这能有所帮助。
发布于 2015-01-25 05:23:03
在lwjgl 3.x及更高版本中,您可以尝试:GLContext.createFromCurrent();
如果使用libgdx,也有Gdx.app.postRunnable(...)在呈现线程上发布Runnable。
https://stackoverflow.com/questions/14347340
复制相似问题