线程“main”中的异常java.lang.RuntimeException:找不到OpenGL上下文

问题描述:

我最近开始使用lwjgl并没有遇到任何问题。昨天我去创建一个新窗口(东西我至少做了十次,如果不是更多),当我跑了它,它给了这些错误线程“main”中的异常java.lang.RuntimeException:找不到OpenGL上下文

Exception in thread "main" java.lang.RuntimeException: No OpenGL context found in the current thread. 
    at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124) 
    at org.lwjgl.opengl.GL11.glMatrixMode(GL11.java:2051) 
    at Main.initGL(Main.java:10) 
    at Main.main(Main.java:34) 

我的代码是

import org.lwjgl.LWJGLException; 
import org.lwjgl.opengl.Display; 
import org.lwjgl.opengl.DisplayMode; 
import static org.lwjgl.opengl.GL11.*; 

public class Main 
{ 
    public static void initGL() 
    { 
     glMatrixMode(GL_PROJECTION); 
     glLoadIdentity(); 
     glOrtho(0, 640, 480, 0, 1, -1); 
     glMatrixMode(GL_MODELVIEW); 
    } 

    public static void initDisplay() 
    { 
     try 
     { 
      Display.setDisplayMode(new DisplayMode(480, 600)); 
      Display.setTitle("Texture Demo"); 
      Display.create(); 
     } 

     catch (LWJGLException e) 
     { 
      e.printStackTrace(); 
     } 
     Display.update(); 
    } 

    public static void main(String[] args) 
    { 
     initGL(); 
     initDisplay(); 
    } 
} 

我看不到任何错误,就像我说的,我之前运行过这个代码。

+1

检查*** [this](http://*.com/questions/14926929/java-lang-runtimeexception-no-opengl-context-found-in-the-current-thread)***和* ** [this](http://*.com/questions/15950151/no-opengl-context-found-in-the-current-thread)***帖子 – 2013-04-27 07:17:44

如果更改init状态,它将起作用。所以起初你必须做initDisplay(),因为矩阵不会找到OpenGL的显示。

我最近在制作游戏时遇到了这个问题。 OpenGL初始化需要在Display创建之后。此外,您必须不断更新您的显示屏,否则会立即关闭创建。这里有一个例子:

public void run() { 
     while(!Display.isCloseRequested) { 
      Display.update() 
      // Add repainting and input here 
     } 
    } 

,并添加你的“主”方法“运行”方法

initGLinitDisplay是南辕北辙。

在开始调用GL函数之前,GL需要一个上下文,因此initDisplay()然后initGL()