// Idem a Display private void glControl_Paint(object sender, PaintEventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); /////////////////////////////////////////////////// // Escena 3D this.Set3DEnv(); // // Se corresponde se dibujan los componentes de la simulación if (this.escenaSimulando) { Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity(); // Se modifica la cámara para que recorra los puntos de la cámara bspline if (camaraFija) { Glu.gluLookAt(eye[0], eye[1], eye[2], at[0], at[1], at[2], up[0], up[1], up[2]); } else { IList <PuntoFlotante> puntosPosicionCamara = vista.GetPuntosPosicionCamara(); Glu.gluLookAt(puntosPosicionCamara[escena.iteradorCurva % puntosPosicionCamara.Count].GetXFlotante(), puntosPosicionCamara[escena.iteradorCurva % puntosPosicionCamara.Count].GetYFlotante(), 10, 0, 0, 0, up[0], up[1], up[2]); } // Si corresponde se dibujan los ejes if (view_axis) { Gl.glCallList(DL_AXIS); } // Se corresponde se dibuja la grilla if (view_grid) { Gl.glCallList(DL_GRID); } // Se aplica escalado para pasar de las coordenadas del mundo a las coordenadas de la escena vista.EscalarMundoToEscena3D(); // Se dibuja la rueda this.vista.DibujarRueda(); // Se dibuja la superficie DrawSurface(); Gl.glPopMatrix(); } // /////////////////////////////////////////////////// // Panel 2D para la vista del camino de la camara. Gl.glLoadIdentity(); this.SetPanelTopEnv(); Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity(); Glu.gluLookAt(0, 0, 0.5, 0, 0, 0, 0, 1, 0); Gl.glCallList(DL_AXIS2D_TOP); // this.vista.DibujarCamaraPath(); // /////////////////////////////////////////////////// // Panel 2D para la vista del perfil del terreno. this.SetPanelHeightEnv(); Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity(); Glu.gluLookAt(0, 0, 0.5, 0, 0, 0, 0, 1, 0); Gl.glCallList(DL_AXIS2D_HEIGHT); // this.vista.DibujarTerreno2D(); // /////////////////////////////////////////////////// }