java - slick2d - statebasedgame error - в текущем потоке не найден контекст OpenGL

1

Я только начал играть с игровой структурой на основе 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)

  • 1
    Вы делаете слишком много работы в своем конструкторе ( NewMenu ). Добавьте отдельный метод init (...) который вы можете вызвать после того, как у вас есть контекст GL для загрузки ресурсов GL. Как сейчас, вы делаете это до того, как настроите контекст GL.
  • 0
    Спасибо, что исправили. Каждый урок, который я видел, показывает этот код в конструкторе
Показать ещё 1 комментарий
Теги:
opengl
slick2d

1 ответ

1
Лучший ответ

Исправлено перемещением кода из конструктора в метод init

Ещё вопросы

Сообщество Overcoder
Наверх
Меню