2014-12-30 6 views
0

2-3 주 전에 다운로드 한 Jogl의 1010 년 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(); 
} 

문제는 세 가지 대안 중 푸시 및 팝 컬러를 시도하는 데 사용 된 것이므로 아무 것도 작동하지 않습니다. 팝 작업 (Matrix 또는 Attrib) 후에 색상을 수동으로 재설정하지 않으면 색상은 마지막으로 사용한 색상과 동일하게 유지됩니다.

푸시/팝이 변환에 사용되므로 올바르게 사용하고 있지만 색상은 그렇지 않습니다. 나는 다른 어떤 특성도 시도해 보았습니다. Jogl을 배우는 동안 이것이 나의 첫 번째 시도입니다. 여우보다 훨씬 광산.

많은 코드 조각을 복사하고 동일한 효과를 가진 코드 조각을 사용하려고했습니다. 그래서 나는 지금 당황하다.

단서, 힌트 또는 동반 웃음을 높이 평가합니다.

+0

안녕 제프, 당신은 기존의 OpenGL을 피해야한다 – elect

답변