Java 为什么在OpenGL上下文初始化之后移动一些变量声明会破坏代码?

Java 为什么在OpenGL上下文初始化之后移动一些变量声明会破坏代码?,java,opengl,lwjgl,Java,Opengl,Lwjgl,我目前正在开发一个Java游戏,我在AWT画布中使用OpenGL和LWJGL 2.9.3。 实际上我不明白为什么在Display.create()之后移动一些对象声明会使画布停止显示任何内容(glClearColor仍然有效) 以下是有效的代码: private void startGL(){ glThread=新线程(()->{ isRunning=true; ArrayList实体=新的ArrayList(); 矢量3F光位置=新矢量3F(-20.0f,20.0f,-20.0f); Matr

我目前正在开发一个Java游戏,我在AWT画布中使用OpenGL和LWJGL 2.9.3。 实际上我不明白为什么在
Display.create()
之后移动一些对象声明会使画布停止显示任何内容(
glClearColor
仍然有效)

以下是有效的代码:

private void startGL(){
glThread=新线程(()->{
isRunning=true;
ArrayList实体=新的ArrayList();
矢量3F光位置=新矢量3F(-20.0f,20.0f,-20.0f);
Matrix4f projMatrix=新Matrix4f();
摄像机;
EntityRenderer EntityRenderer=null;
试一试{
Display.setDisplayMode(新的显示模式(显示宽度、显示高度));
Display.create();
}捕获(LWJGLEXE){
e、 printStackTrace();
}
glEnable(GLU深度试验);
glEnable(GL_CULL_面);
正面(背面);
摄像头=新摄像头();
试一试{
entityRenderer=新的entityRenderer();
}捕获(IOE异常){
e、 printStackTrace();
}
projMatrix.setPerspective((float)Math.toRadians(45.0f),dmGetAspectRatio(),0.1f,1000f);
同时(正在运行){
//呈现和更新代码
}
//清除代码
}“LWJGL螺纹”);
glThread.start();
}
下面是不起作用的代码:

private void startGL(){
glThread=新线程(()->{
isRunning=true;
试一试{
Display.setDisplayMode(新的显示模式(显示宽度、显示高度));
Display.create();
}捕获(LWJGLEXE){
e、 printStackTrace();
}
ArrayList实体=新的ArrayList();
矢量3F光位置=新矢量3F(-20.0f,20.0f,-20.0f);
Matrix4f projMatrix=新Matrix4f();
摄像机;
EntityRenderer EntityRenderer=null;
glEnable(GLU深度试验);
glEnable(GL_CULL_面);
正面(背面);
摄像头=新摄像头();
试一试{
entityRenderer=新的entityRenderer();
}捕获(IOE异常){
e、 printStackTrace();
}
projMatrix.setPerspective((float)Math.toRadians(45.0f),dmGetAspectRatio(),0.1f,1000f);
同时(正在运行){
//呈现和更新代码
}
//清除代码
}“LWJGL螺纹”);
glThread.start();
}
这些方法由画布初始化中的
addNotify()
方法调用。 完整的代码来自。
这个问题其实并不重要,但我想知道为什么仅仅替换几个声明就可以完全破坏游戏。

这看起来像是一个与何时在画布上调用addNotify()以及何时glTread creates调用Display.create()有关的时间问题,后者在画布上创建视觉和OpenGL上下文。您只需将变量声明替换为Thread.sleep(10),并在循环中呈现一个简单的glBegin(GL_行),问题就可以重现。我建议在设置窗口visible.Btw后启动glThread。对于将OpenGL画布集成到AWT和LWJGL 2,还有一个是的,你是对的,这是一个时间问题,我在Display.create和works之前添加了20ms睡眠。非常感谢。我还将查找AWTGLCanvas类。