Я только начал играть с игровой структурой на основе slick2d. Я создал основной класс следующим образом
public static final int newMenu = 0;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
AppGameContainer appgc;
try {
appgc = new AppGameContainer(new StateBased("StateBased Test"));
appgc.setDisplayMode(640, 360, false);
appgc.start();
} catch (SlickException e) {
}
}
public StateBased(String name) throws SlickException {
super(name);
this.addState(new NewMenu(newMenu));
}
@Override
public void initStatesList(GameContainer gc) throws SlickException {
this.getState(newMenu).init(gc, this);
}
теперь новый класс меню до сих пор
private final int state;
private final Image bg;
private final static String directory = "Images/StartScreen/";
public NewMenu(int state) throws SlickException {
this.state = state;
bg = new Image(directory + "loadbg.png");
}
но я получаю ошибку в строке "bg = новое изображение". "В текущем потоке нет контекста OpenGL". Я смущен, так как у меня нет этого при использовании basicgame вместо statebasedgame
Может ли кто-нибудь помочь мне решить эту проблему?
Это полная ошибка
Исключение в потоке "main" java.lang.RuntimeException: контекст OpenGL не найден в текущем потоке. на org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124) в org.lwjgl.opengl.GL11.glGetError(GL11.java:1299) на org.newdawn.slick.opengl.renderer.ImmediateModeOGLRenderer.glGetError(ImmediateModeOGLRenderer.java: 384) на org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:249) на org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:187) на org.newdawn.slick. Изображение (изображение.java:192) на org.newdawn.slick.Image. (Изображение.java:166) на org.newdawn.slick.Image. (Изображение.java:154) на org.newdawn.slick.Image. (Image.java:132) в statebased.NewMenu. (NewMenu.java:23) в statebased.StateBased. (StateBased.java:36) в statebased.StateBased.main(StateBased.java:27)
Исправлено перемещением кода из конструктора в метод init
NewMenu
). Добавьте отдельный методinit (...)
который вы можете вызвать после того, как у вас есть контекст GL для загрузки ресурсов GL. Как сейчас, вы делаете это до того, как настроите контекст GL.