首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在当前线程中没有找到OpenGL上下文,如何修复此错误?

在当前线程中没有找到OpenGL上下文,如何修复此错误?
EN

Stack Overflow用户
提问于 2013-01-15 21:32:51
回答 5查看 40.5K关注 0票数 11

我正在做一个纸牌游戏,目前有一个很好的基础,但是当我在eclipse中运行它时,我遇到了一个错误。我还使用了光滑的2d。

这是来自控制台的错误。

线程“主”java.lang.RuntimeException中的异常:在当前线程中没有找到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) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:337) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:275) at org.newdawn.slick.Image.(Image.java( org.newdawn.slick.Image.(Image.java:244) at org.newdawn.slick.Image.(Image.java:232) at org.newdawn.slick.Image.(Image.java:198) at Cards.Card.(Card.java:18) )

我认为错误发生的来源的代码(Card类)

代码语言:javascript
复制
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];
    }
}

以前有人见过这种问题吗?我该怎么解决呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-15 22:16:17

这种错误对于LWJGL启动器来说是常见的。OpenGL上下文在创建线程时被绑定到线程。因此,您只能从同一个线程访问此上下文。

因为看起来您没有处理不同的线程,所以可能还有另一个原因。Slick2D的Image类似乎需要一个有效的OpenGL上下文。

因此,我的第一次尝试是在初始化卡片图像之前初始化一个OpenGL上下文。

票数 12
EN

Stack Overflow用户

发布于 2013-03-24 02:28:06

这在我身上发生过一次,直到我意识到在OpenGL初始化之前我正在调用图像加载器,我才知道该做什么。确保在OpenGL inits之前没有使用构造函数中的图像加载器(或任何其他调用的方法)定义任何变量(我所做的)。

您是否在初始化Card类之前定义OpenGL类?

希望这能有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2015-01-25 05:23:03

在lwjgl 3.x及更高版本中,您可以尝试:GLContext.createFromCurrent();

如果使用libgdx,也有Gdx.app.postRunnable(...)在呈现线程上发布Runnable

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14347340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档