在JOGL上对glGL使用glBindVertexArray(0)导致黑屏

时间:2015-06-27 21:14:10

标签: java swing opengl jogl

所以我正在使用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时呈现。谁知道为什么???

编辑:实际上,正在发生的事情是“显示”方法仅在窗口启动或调整大小时被调用。有人知道解决方法吗?

0 个答案:

没有答案