/// <summary> /// Pops the specified parent element. /// </summary> /// <param name="gl">The OpenGL instance.</param> /// <param name="parentElement">The parent element.</param> public override void Pop(OpenGL gl, SceneElement parentElement) { LookAtCamera camera = parentElement.TraverseToRootElement().ParentScene.CurrentCamera as LookAtCamera; if (camera != null) { gl.Viewport(0, 0, result[2], result[3]); } // Pop the stack. gl.PopMatrix(); }
/// <summary> /// Pushes the effect onto the specified parent element. /// </summary> /// <param name="gl">The OpenGL instance.</param> /// <param name="parentElement">The parent element.</param> public override void Push(OpenGL gl, SceneElement parentElement) { // Push the stack. gl.PushMatrix(); LookAtCamera camera = parentElement.TraverseToRootElement().ParentScene.CurrentCamera as LookAtCamera; if (camera != null) { SetTranslate(gl, camera); const int width = 200; gl.GetInteger(OpenGL.GL_VIEWPORT, result); gl.Viewport(0, 0, width, width * result[3] / result[2]); } // Perform the transformation. linearTransformation.Transform(gl); }
/// <summary> /// Pushes the effect onto the specified parent element. /// </summary> /// <param name="gl">The OpenGL instance.</param> /// <param name="parentElement">The parent element.</param> public override void Push(OpenGL gl, SceneElement parentElement) { // Push the stack. gl.PushMatrix(); // Try to get the scene's camera. if (this.arcBall.Camera == null) { SceneContainer container = parentElement.TraverseToRootElement(); if (container != null) { Scene scene = container.ParentScene; IScientificCamera camera = scene.CurrentCamera as IScientificCamera; this.arcBall.Camera = camera; } } // Perform the transformation. arcBall.TransformMatrix(gl); }