1. ホーム
  2. java

[解決済み] 現在のスレッドでOpenGLコンテキストが見つかりません。このエラーを修正するにはどうしたらいいですか?

2022-02-07 18:32:55

質問内容

カードゲームを作っていて、現在基礎はできているのですが、eclipseで実行するとエラーになります。また、slick 2dを使用しています。

以下はコンソールからのエラーです。

スレッド "main" java.lang.RuntimeException で例外が発生しました。No 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) で org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:337) で org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:275) org.newdawn.slick.Image.Image(Image.java:270) at org.newdawn.slick.Image.(Image.java:244) at org.newdawn.slick.Image.(Image.java:232) at org.newdawn.slick.Image.(Image.java:198) at カード.カード(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];
    }
}

このような問題を見たことがある方はいらっしゃいますか?どうすれば解決できますか?

解決方法は?

この種のエラーは、LWJGLスターターではよくあることです。OpenGLコンテキストは、それが作成されたとき、スレッドにバインドされます。だから、同じスレッドからしか、このコンテキストにアクセスできない。

異なるスレッドで作業しているようには見えないので、別の原因があるのかもしれません。Slick2Dは、有効なOpenGLコンテクストを Image クラスがあります。

ですから、私が最初に試みるのは、カード画像を初期化する前にOpenGLコンテキストを初期化することです。