public void pop(GL2 gl) { if (this.attribsPushed) { gl.PopAttrib(); this.attribsPushed = false; } if (this.clientAttribsPushed) { gl.PopClientAttrib(); this.clientAttribsPushed = false; } if (this.modelviewPushed) { gl.MatrixMode(GL2.GL_MODELVIEW); gl.PopMatrix(); this.modelviewPushed = false; } if (this.projectionPushed) { gl.MatrixMode(GL2.GL_PROJECTION); gl.PopAttrib(); this.projectionPushed = false; } if (this.texturePushed) { gl.MatrixMode(GL2.GL_TEXTURE); gl.PopMatrix(); this.texturePushed = false; } }
/** * Removes the model-view matrix on top of the matrix stack, and restores the original matrix. * * @param dc the current World Wind drawing context on which the original matrix will be restored. * * @throws ArgumentException if <code>dc</code> is null, or if the <code>Globe</code> or <code>GL</code> * instances in <code>dc</code> are null. */ public void popReferenceCenter(DrawContext dc) { if (dc == null) { String message = Logging.getMessage("nullValue.DrawContextIsNull"); Logging.logger().severe(message); throw new ArgumentException(message); } if (dc.getGL() == null) { String message = Logging.getMessage("nullValue.DrawingContextGLIsNull"); Logging.logger().severe(message); throw new IllegalStateException(message); } GL2 gl = dc.getGL().getGL2(); // GL initialization checks for GL2 compatibility. // Store the current matrix-mode state. OGLStackHandler ogsh = new OGLStackHandler(); try { ogsh.pushAttrib(gl, GL2.GL_TRANSFORM_BIT); gl.MatrixMode(GL2.GL_MODELVIEW); // Pop the top model-view matrix. gl.PopMatrix(); } finally { ogsh.pop(gl); } }