Colors Jogl推送/弹出矩阵和颜色

Colors Jogl推送/弹出矩阵和颜色,colors,jogl,Colors,Jogl,我使用的是2-3周前下载的2014年10月10日版Jogl。我无法轻松找到实际版本号,因此我希望这足以指导回答 我的问题是我似乎找不到一种方法来推动和弹出一种颜色。一个小代码来指导这个问题 我有一个画正方形的小方法 protected void linear (GL2 gl ,double ax,double ay,double az

我使用的是2-3周前下载的2014年10月10日版Jogl。我无法轻松找到实际版本号,因此我希望这足以指导回答

我的问题是我似乎找不到一种方法来推动和弹出一种颜色。一个小代码来指导这个问题

我有一个画正方形的小方法

protected   void            linear  (GL2    gl
                                    ,double ax,double ay,double az
                                    ,double bx,double by,double bz
                                    )
{
    gl.glBegin(GL.GL_LINES);
    gl.glVertex3d(ax,ay,az);
    gl.glVertex3d(bx,by,bz);
    gl.glEnd();
}
这是从这样的渲染方法调用的

protected   void                render(GL2 gl)
{
    /*
     * glPushMatrix not for color
     * glPushattrib(GL2.GL_COLOR) not for color
     * gl.glPushAttrib(GL2.GL_COLOR_BUFFER_BIT) not for color
     */
    //      gl.glPushMatrix();
    //      gl.glPushAttrib(GL2.GL_COLOR_BUFFER_BIT);
    //      gl.glPushAttrib(GL2.GL_COLOR);
    gl.glColor3d(0.0,0.0,1.0);
    linear(gl,0,0,0, 1, 1,0);
    //      gl.glPopAttrib();
    //      gl.glPopMatrix();

    // force reset of color because either it is not part of the matrix or the matrix is buggy
    gl.glColor3d(1.0,1.0,1.0);
    linear(gl,0,0,0, 1,-1,0);
}

最后,从“正常显示”方法调用此渲染方法

public      void            display(GLAutoDrawable drawable)
{
    GL2 gl = drawable.getGL().getGL2();

    // Clear screen.
    gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);

    // Make sure the correct matrix is loaded prior to rendering
    //      gl.glMatrixMode(GL2.GL_MODELVIEW);
    gl.glLoadIdentity();

    render(gl);

    // ensure all gl command are executed and the display updated nothing left in the pipeline
    gl.glFlush();
}
问题是,在尝试推送和弹出颜色的三种备选方案中,它们都不起作用。如果在pop操作(矩阵或属性)后未手动重置颜色,则颜色将保持与上次使用的颜色相同

推送/弹出适用于变换,因此我认为我正确地使用了它们,但颜色不正确。我已经尝试过任何其他属性,这是我在学习Jogl时的第一次尝试。迄今为止,地雷比散兵坑多得多

我复制了许多代码片段,并试图使用那些具有相同效果的代码片段。所以现在我被难住了


线索、提示或友好的笑声值得欣赏。

将GL2ES1.GL\u CURRENT\u颜色与glGetFloat一起使用,将GL\u CURRENT\u位与glPushAttrib一起使用。在这里询问有关OpenGL的任何问题之前,请阅读手册:


嗨,杰夫,你应该避免使用传统的OpenGL