我最近开始使用lwjgl并没有遇到任何问题。昨天我去创建一个新窗口(我已经完成了至少十几次,如果不是更多的话),当我运行它时它会出现这些错误
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();
}
}
我看不到任何错误,就像我说的那样,我之前运行过这段代码。
答案 0 :(得分:3)
initGL
和initDisplay
是错误的。
GL需要一个上下文才能开始调用GL函数,因此initDisplay()
然后initGL()
。
答案 1 :(得分:1)
我最近在制作游戏时遇到过这个问题。 OpenGL初始化需要在显示创建之后。此外,您必须不断更新您的显示器,否则它将立即关闭创建。这里有一个例子:
public void run() {
while(!Display.isCloseRequested) {
Display.update()
// Add repainting and input here
}
}
在“main”方法中添加“run”方法
答案 2 :(得分:0)
如果更改初始状态,它将起作用。所以首先你必须做initDisplay()因为矩阵不会找到OpenGL的显示。