所以我正在使用JGLPanel编写一个带有Swing GUI的JOGL应用程序。代码如下,
public class GLWindow implements GLEventListener {
(...)
public void display(GLAutoDrawable arg0) {
// TODO Auto-generated method stub
gl.glClear(GL4.GL_COLOR_BUFFER_BIT);
gl.glFlush();
}
public void dispose(GLAutoDrawable arg0) {
// TODO Auto-generated method stub
}
public void init(GLAutoDrawable arg0) {
// TODO Auto-generated method stub
gl = arg0.getGL().getGL4();
glu = new JGLU();
// clear color
gl.glClearColor(1.0f, 0.3f, 0.2f, 1.0f);
gl.glBindVertexArray(0);
}
public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3,
int arg4) {
// TODO Auto-generated method stub
}
public static void main(String[] args)
{
GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL4));
gljpanel = new GLJPanel(caps);
GLWindow window = new GLWindow();
gljpanel.addGLEventListener(window);
}
(省略了GUI设置的代码。)
我运行这个,我得到一个黑色的screne。当我用gl.glBindVertexArray(0)删除该行时;程序程序运行正常,我得到一个红色的屏幕。当我尝试使用VAO渲染模型时,它只会在我没有取消绑定VAO时呈现。谁知道为什么???
编辑:实际上,正在发生的事情是“显示”方法仅在窗口启动或调整大小时被调用。有人知道解决方法吗?