Java 线程中的LibGDX异常;LWJGL应用程序“;错误
所以首先,我对使用libGDX有点陌生。我有一本关于Java游戏开发与LibGDX的书,我正在尝试运行第2章中的示例程序。我用的是BlueJ。代码如下:Java 线程中的LibGDX异常;LWJGL应用程序“;错误,java,libgdx,Java,Libgdx,所以首先,我对使用libGDX有点陌生。我有一本关于Java游戏开发与LibGDX的书,我正在尝试运行第2章中的示例程序。我用的是BlueJ。代码如下: import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.Game;
public class StarfishCollectorAlpha extends Game
{
private SpriteBatch batch;
private Texture turtleTexture;
private float turtleX;
private float turtleY;
private Rectangle turtleRectangle;
private Texture starfishTexture;
private float starfishX;
private float starfishY;
private Rectangle starfishRectangle;
private Texture oceanTexture;
private Texture winMessageTexture;
private boolean win;
public void create()
{
batch = new SpriteBatch();
turtleTexture = new Texture( Gdx.files.internal("assets/turtle-1.png") );
turtleX = 20;
turtleY = 20;
turtleRectangle = new Rectangle( turtleX, turtleY,
turtleTexture.getWidth(), turtleTexture.getHeight() );
starfishTexture = new Texture( Gdx.files.internal("assets/starfish.png") );
starfishX = 380;
starfishY = 380;
starfishRectangle = new Rectangle( starfishX, starfishY,
starfishTexture.getWidth(), starfishTexture.getHeight() );
oceanTexture = new Texture( Gdx.files.internal("assets/water.jpg") );
winMessageTexture = new Texture( Gdx.files.internal("assets/you-win.png") );
win = false;
}
public void render()
{
// check user input
if (Gdx.input.isKeyPressed(Keys.LEFT))
turtleX--;
if (Gdx.input.isKeyPressed(Keys.RIGHT))
turtleX++;
if (Gdx.input.isKeyPressed(Keys.UP))
turtleY++;
if (Gdx.input.isKeyPressed(Keys.DOWN))
turtleY--;
// update turtle rectangle location
turtleRectangle.setPosition(turtleX, turtleY);
// check win condition: turtle must be overlapping starfish
if (turtleRectangle.overlaps(starfishRectangle))
win = true;
// clear screen
Gdx.gl.glClearColor(0,0,0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
// draw graphics
batch.begin();
batch.draw( oceanTexture, 0, 0 );
if (!win)
batch.draw( starfishTexture, starfishX, starfishY );
batch.draw( turtleTexture, turtleX, turtleY );
if (win)
batch.draw( winMessageTexture, 180, 180 );
batch.end();
}
}
及
我得到一个错误:
Exception in thread "LWJGL Application" java.lang.RuntimeException: No OpenGL context found in the current thread.
at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)
at org.lwjgl.opengl.GL11.glGetError(GL11.java:1299)
at org.lwjgl.opengl.Util.checkGLError(Util.java:57)
at org.lwjgl.opengl.WindowsContextImplementation.setSwapInterval(WindowsContextImplementation.java:113)
at org.lwjgl.opengl.ContextGL.setSwapInterval(ContextGL.java:232)
at org.lwjgl.opengl.DrawableGL.setSwapInterval(DrawableGL.java:86)
at org.lwjgl.opengl.Display.setSwapInterval(Display.java:1129)
at org.lwjgl.opengl.Display.setVSyncEnabled(Display.java:1142)
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:558)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
以前有人犯过这个错误吗?有人知道解决方法吗?我知道这与多线程有关,但是我没有打开任何新线程。正如我所说的,我对使用libGDX相当陌生,所以我不是100%了解它的工作原理
感谢您尝试重置Java虚拟机,这可以通过单击Bluej主项目屏幕右下角的图标来完成 我也在关注你正在读的那本书,通过我上面所写的,我能够解决我的问题。希望对你有用
尝试重置Java虚拟机,这可以通过单击Bluej主项目屏幕右下角的图标来完成 我也在关注你正在读的那本书,通过我上面所写的,我能够解决我的问题。希望对你有用
这就是全部错误吗?应该有更多的错误信息可以帮助我们,但我怀疑线程和如何在主线程内启动游戏存在问题,或者OpenGL上下文尚未初始化。是的,这就是整个错误消息。抱歉,我没有提供更多信息,我只是不知道如果不使用BlueJ会有什么帮助?首先,尝试在Eclipse或NetBeans IDEs中运行它,其次-检查其他示例,尝试从其他线程访问视频内存时会出现常见的上下文问题,是的,但有时它无法创建上下文,因为驱动程序的问题,这就是整个错误吗?应该有更多的错误信息可以帮助我们,但我怀疑线程和如何在主线程内启动游戏存在问题,或者OpenGL上下文尚未初始化。是的,这就是整个错误消息。抱歉,我没有提供更多信息,我只是不知道如果不使用BlueJ会有什么帮助?首先,尝试在Eclipse或NetBeans IDEs中运行它,其次-检查其他示例,尝试从其他线程访问视频内存时会出现常见的上下文问题,是的,但有时它无法创建上下文,因为司机的问题
Exception in thread "LWJGL Application" java.lang.RuntimeException: No OpenGL context found in the current thread.
at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)
at org.lwjgl.opengl.GL11.glGetError(GL11.java:1299)
at org.lwjgl.opengl.Util.checkGLError(Util.java:57)
at org.lwjgl.opengl.WindowsContextImplementation.setSwapInterval(WindowsContextImplementation.java:113)
at org.lwjgl.opengl.ContextGL.setSwapInterval(ContextGL.java:232)
at org.lwjgl.opengl.DrawableGL.setSwapInterval(DrawableGL.java:86)
at org.lwjgl.opengl.Display.setSwapInterval(Display.java:1129)
at org.lwjgl.opengl.Display.setVSyncEnabled(Display.java:1142)
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:558)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)