10

私はカードゲームに取り組んでおり、現在は良い基盤を持っていますが、Eclipse で実行するとエラーが発生します。私もslick 2dを使っています。

コンソールからのエラーは次のとおりです。

スレッド「メイン」での例外 java.lang.RuntimeException: 現在のスレッドで OpenGL コンテキストが見つかりません。org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124) で org.lwjgl.opengl.GL11.glGetError(GL11.java:1277) で 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.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) で Cards.Card.(Card.java:18)

エラーの原因が発生していると思われるコード(カードクラス)

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];
    }
}

誰もこの種の問題を見たことがありますか?どうすれば解決できますか?

4

5 に答える 5

12

この種のエラーは、LWJGLスターターによく見られます。OpenGLコンテキストは、作成時にスレッドにバインドされます。したがって、このコンテキストには同じスレッドからのみアクセスできます。

別のスレッドで作業しているようには見えないため、別の原因がある可能性があります。Slick2Dは、そのImageクラスに有効なOpenGLコンテキストを必要としているようです。

したがって、私の最初の試みは、カードイメージを初期化する前にOpenGLコンテキストを初期化することです。

于 2013-01-15T22:16:17.007 に答える
4

これは私にも一度起こりました。OpenGL が初期化される前にイメージ ローダーを呼び出していることに気付くまで、何をすべきかわかりませんでした。OpenGL inits (私が行ったこと) の前に、コンストラクター (または呼び出された他のメソッド) でイメージローダーを使用して変数を定義していないことを確認してください。

CardOpenGL が初期化される前にクラスを定義していますか?

お役に立てれば。

于 2013-03-24T02:28:06.203 に答える
4

lwjgl 3.x 以降では、以下を試すことができます。 GLContext.createFromCurrent();

libgdx を使用している場合は、レンダリング スレッドGdx.app.postRunnable(...)に投稿することもあります。Runnable

于 2015-01-25T05:23:03.037 に答える