线程“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();
}
}
我看不到任何错误,就像我说的,我之前运行过这个代码。
答
如果更改init状态,它将起作用。所以起初你必须做initDisplay(),因为矩阵不会找到OpenGL的显示。
答
我最近在制作游戏时遇到了这个问题。 OpenGL初始化需要在Display创建之后。此外,您必须不断更新您的显示屏,否则会立即关闭创建。这里有一个例子:
public void run() {
while(!Display.isCloseRequested) {
Display.update()
// Add repainting and input here
}
}
,并添加你的“主”方法“运行”方法
答
initGL
和initDisplay
是南辕北辙。
在开始调用GL函数之前,GL需要一个上下文,因此initDisplay()
然后initGL()
。
检查*** [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