private void DibujarTerreno(Terreno terreno, Boolean aplicarClipping, ViewPort viewPort) { foreach (Poligono poligono in PoligonosTerreno) { IList puntosDibujo; if (aplicarClipping) { puntosDibujo = Clipping.RecortarPoligono(poligono.Puntos, viewPort); } else { puntosDibujo = poligono.Puntos; } // Se rellena el polígono //Pintar.RellenarPoligonoScanLine(puntosDibujo, poligono.ColorRelleno); Gl.glColor3f(poligono.ColorLinea.Red, poligono.ColorLinea.Green, poligono.ColorLinea.Blue); // Todos los puntos van a ser unidos por segmentos y el último se une al primero Gl.glBegin(Gl.GL_POLYGON); foreach (Punto punto in puntosDibujo) { Gl.glVertex2d(punto.GetXFlotante(), punto.GetYFlotante()); } Gl.glEnd(); } }
private void AplicarClipping(Rueda rueda) { foreach (Poligono poligono in PoligonosTerreno) { poligono.Puntos = Clipping.RecortarPoligono(poligono.Puntos, new ViewPort(rueda)); } foreach (Poligono poligono in PoligonosRueda) { poligono.Puntos = Clipping.RecortarPoligono(poligono.Puntos, new ViewPort(rueda)); } }