#include <GL/glut.h>
void init(void){
glClearColor(0.0,1.0,1.0,0.0); //color de fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal
}
void circulo(int x, int y, int radio)
{ int angulo=0;
glBegin(GL_TRIANGLE_FAN);
glVertex2f(x,y);
for (angulo=180;angulo>0; angulo-=1){
glVertex2f(x + sin(angulo) * radio, y + cos(angulo) *radio);
}
glEnd();
}//fin circulo
void dibuja(void) //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glEnable(GL_CULL_FACE);
//Montañas
//montaña3
glBegin(GL_TRIANGLES);
glColor3f(0.0 , 0.4 , 0.0);
glVertex2i(300,800);
glColor3f(0.0 , 1.0 , 0.0);
glVertex2i(400,800);
glVertex2i(350,900);
glEnd();
//montaña1
glBegin(GL_TRIANGLES);
glColor3f(0.0 , 0.0 , 0.5);
glVertex2i(0,800);
glVertex2i(150,800);
glVertex2i(75,900);
glEnd();
//nieve montaña1
glBegin(GL_TRIANGLES);
glColor3f(0.0 , 0.0 , 0.5);
glVertex2i(52,870);
glColor3f(1.0 , 1.0 , 1.0);
glVertex2i(100,870);
glVertex2i(75,900);
glEnd();
//montaña2
glBegin(GL_TRIANGLES);
glColor3f(0.0 , 0.0 , 0.4);
glVertex2i(120,800);
glColor3f(0.0 , 0.0 , 1.0);
glVertex2i(350,800);
glVertex2i(255,980);
glEnd();
//nieve montaña2
glBegin(GL_TRIANGLES);
glColor3f(0.5 , 0.5 , 1.0);
glVertex2i(215,930);
glColor3f(1.0 , 1.0 , 1.0);
glVertex2i(285,930);
glVertex2i(255,980);
glEnd();
//monte centro
glBegin(GL_QUADS);
glColor3f(0.0 , 0.3 , 0.0);
glVertex2i(0,600);
glVertex2i(700,600);
glColor3f(0.0 , 0.8 , 0.0);
glVertex2i(700,800);
glVertex2i(0,800);
glEnd();
//monte derecha
glBegin(GL_QUADS);
glColor3f(0.0 , 0.3 , 0.0);
glVertex2i(700,600);
glVertex2i(1000,600);
glVertex2i(1000,650);
glColor3f(0.0 , 0.8 , 0.0);
glVertex2i(700,800);
glEnd();
//monte abajo
glBegin(GL_QUADS);
glColor3f(0.0 , 0.4 , 0.0);//verde
glVertex2i(0,300);
glVertex2i(1000,300);
glVertex2i(1000,600);
glVertex2i(0,600);
glEnd();
//pestañas
//izquierda
glBegin(GL_TRIANGLES);
glColor3f(0.0 , 0.3 , 0.0);
glVertex2i(0,550);
glVertex2i(200,600);
glVertex2i(0,600);
glEnd();
//derecha
glBegin(GL_TRIANGLES);
glColor3f(0.0 , 0.3 , 0.0);
glVertex2i(900,600);
glVertex2i(998,580);
glVertex2i(998,600);
glEnd();
//calle
glColor3f(0.2 , 0.2 , 0.2);
glBegin(GL_POLYGON);
glVertex2i(0,120);
glVertex2i(0,0);
glVertex2i(998,0);
glVertex2i(998,120);
glEnd();
//raya amarilla
glColor3f(1.0 , 0.96 , 0.49);
glBegin(GL_POLYGON);
glVertex2i(0,140);
glVertex2i(0,120);
glVertex2i(998,120);
glVertex2i(998,140);
glEnd();
//rallita gris
glColor3f(0.66 , 0.66 , 0.66);
glBegin(GL_POLYGON);
glVertex2i(0,180);
glVertex2i(0,140);
glVertex2i(998,140);
glVertex2i(998,180);
glEnd();
//rallita gris
glColor3f(0.66 , 0.66 , 0.66);
glBegin(GL_POLYGON);
glVertex2i(320,300);
glVertex2i(320,180);
glVertex2i(360,180);
glVertex2i(360,300);
glEnd();
//pasto izquierda
glColor3f(0.0 , 0.35 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(0,300);
glVertex2i(0,180);
glVertex2i(320,180);
glVertex2i(320,300);
glEnd();
//cuadritos
glColor3f(0.66 , 0.66 , 0.66);
glBegin(GL_POLYGON);
glVertex2i(60,220);
glVertex2i(60,200);
glVertex2i(100,200);
glVertex2i(100,220);
glEnd();
//2 cuadritos
glColor3f(0.66 , 0.66 , 0.66);
glBegin(GL_POLYGON);
glVertex2i(60,260);
glVertex2i(60,240);
glVertex2i(100,240);
glVertex2i(100,260);
glEnd();
//3 cuadritos
glColor3f(0.66 , 0.66 , 0.66);
glBegin(GL_POLYGON);
glVertex2i(120,260);
glVertex2i(120,240);
glVertex2i(160,240);
glVertex2i(160,260);
glEnd();
//4 cuadritos
glColor3f(0.66 , 0.66 , 0.66);
glBegin(GL_POLYGON);
glVertex2i(120,220);
glVertex2i(120,200);
glVertex2i(160,200);
glVertex2i(160,220);
glEnd();
//pasto derecha
glColor3f(0.0 , 0.35 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(360,300);
glVertex2i(360,180);
glVertex2i(1000,180);
glVertex2i(1000,300);
glEnd();
//cochera
glColor3f(0.4 , 0.4 , 0.4);
glBegin(GL_POLYGON);
glVertex2i(60,440);
glVertex2i(60,280);
glVertex2i(160,280);
glVertex2i(160,440);
glEnd();
//cudritos cochera negros
glColor3f(0.0 , 0.0 , 0.0);
glBegin(GL_QUADS);
glVertex2i(70,410);
glVertex2i(105,410);
glVertex2i(105,430);
glVertex2i(70,430);
glEnd();
glBegin(GL_QUADS);
glVertex2i(115,410);
glVertex2i(150,410);
glVertex2i(150,430);
glVertex2i(115,430);
glEnd();
// rallita de la cochera
glColor3f(0.85 , 0.50 , 0.11);
glBegin(GL_POLYGON);
glVertex2i(40,440);
glVertex2i(40,280);
glVertex2i(60,280);
glVertex2i(60,440);
glEnd();
// techito de la cochera
glColor3f(0.85 , 0.14 , 0.11);
glBegin(GL_POLYGON);
glVertex2i(20,440);
glVertex2i(160,440);
glVertex2i(160,460);
glVertex2i(40,460);
glEnd();
// casa
glColor3f(0.560 , 0.360 , 0.188);
//glColor3f(1.0 , 1.00 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(160,560);
glVertex2i(160,280);
glVertex2i(520,280);
glVertex2i(520,560);
glEnd();
// rallas de la casa
glColor3f(0.854 , 0.509 , 0.113);
glBegin(GL_POLYGON);
glVertex2i(300,520);
glVertex2i(300,280);
glVertex2i(320,280);
glVertex2i(320,520);
glEnd();
// 2 rallas de la casa
glColor3f(0.854 , 0.509 , 0.113);
glBegin(GL_POLYGON);
glVertex2i(360,520);
glVertex2i(360,280);
glVertex2i(380,280);
glVertex2i(380,520);
glEnd();
// 3 rallas de la casa
glColor3f(0.854 , 0.509 , 0.113);
glBegin(GL_POLYGON);
glVertex2i(160,440);
glVertex2i(160,420);
glVertex2i(520,420);
glVertex2i(520,440);
glEnd();
// techo grande de la casa
glColor3f(0.854 , 0.145 , 0.113);
glBegin(GL_POLYGON);
glVertex2i(160,600);
glVertex2i(100,560);
glVertex2i(580,560);
glVertex2i(520,600);
glEnd();
// techo chico de la casa
glColor3f(0.85 , 0.14 , 0.11);
glBegin(GL_POLYGON);
glVertex2i(280,520);
glVertex2i(400,520);
glVertex2i(340,560);
glEnd();
//1 ventana de la casa
glColor3f(0.113 , 0.607 , 0.854);
glBegin(GL_POLYGON);
glVertex2i(200,400);
glVertex2i(200,340);
glVertex2i(260,340);
glVertex2i(260,400);
glEnd();
//2 ventana de la casa
glColor3f(0.113 , 0.607 , 0.854);
glBegin(GL_POLYGON);
glVertex2i(200,540);
glVertex2i(200,480);
glVertex2i(260,480);
glVertex2i(260,540);
glEnd();
//3 ventana de la casa
glColor3f(0.113 , 0.607 , 0.854);
glBegin(GL_POLYGON);
glVertex2i(420,540);
glVertex2i(420,480);
glVertex2i(480,480);
glVertex2i(480,540);
glEnd();
//4 ventana de la casa
glColor3f(0.113 , 0.607 , 0.854);
glBegin(GL_POLYGON);
glVertex2i(420,400);
glVertex2i(420,340);
glVertex2i(480,340);
glVertex2i(480,400);
glEnd();
//puerta
glColor3f(1.0 , 1.0 , 1.0);
glBegin(GL_POLYGON);
glVertex2i(320,400);
glVertex2i(320,280);
glVertex2i(360,280);
glVertex2i(360,400);
glEnd();
//manija de la puerta
glColor3f(0.0, 0.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(325,350);
glVertex2i(325,330);
glVertex2i(330,330);
glVertex2i(330,350);
glEnd();
//2 tronco
glColor3f(0.560 , 0.360 , 0.188);
glBegin(GL_POLYGON);
glVertex2i(810,260);
glVertex2i(810,200);
glVertex2i(830,200);
glVertex2i(830,260);
glEnd();
//1 cerca
glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(0,340);
glVertex2i(0,320);
glVertex2i(40,320);
glVertex2i(40,340);
glEnd();
//2 cerca
glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(520,340);
glVertex2i(520,320);
glVertex2i(998,320);
glVertex2i(998,340);
glEnd();
//3 cerca
glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(20,380);
glVertex2i(20,280);
glVertex2i(35,280);
glVertex2i(35,380);
glEnd();
//4 cerca
glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(540,380);
glVertex2i(540,280);
glVertex2i(560,280);
glVertex2i(560,380);
glEnd();
//5 cerca
glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(740,380);
glVertex2i(740,280);
glVertex2i(760,280);
glVertex2i(760,380);
glEnd();
//6 cerca
glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(900,380);
glVertex2i(900,280);
glVertex2i(920,280);
glVertex2i(920,380);
glEnd();
//7 cerca
glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(940,380);
glVertex2i(940,280);
glVertex2i(960,280);
glVertex2i(960,380);
glEnd();
//7 cerca
glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(980,380);
glVertex2i(980,280);
glVertex2i(998,280);
glVertex2i(998,380);
glEnd();
//2 arbol de tronco
glColor3f(0.187 , 0.854 , 0.113);
glBegin(GL_POLYGON);
glVertex2i(750,260);
glVertex2i(900,260);
glVertex2i(820,480);
glEnd();
//rallas de la calle
glColor3f(1.0 , 1.0 , 1.0);
glBegin(GL_POLYGON);
glVertex2i(40,85);
glVertex2i(40,75);
glVertex2i(120,75);
glVertex2i(120,85);
glEnd();
//rallas de la calle
glColor3f(1.0 , 1.0 , 1.0);
glBegin(GL_POLYGON);
glVertex2i(200,85);
glVertex2i(200,75);
glVertex2i(280,75);
glVertex2i(280,85);
glEnd();
//rallas de la calle
glColor3f(1.0 , 1.0 , 1.0);
glBegin(GL_POLYGON);
glVertex2i(420,85);
glVertex2i(420,75);
glVertex2i(500,75);
glVertex2i(500,85);
glEnd();
//rallas de la calle
glColor3f(1.0 , 1.0 , 1.0);
glBegin(GL_POLYGON);
glVertex2i(640,85);
glVertex2i(640,75);
glVertex2i(720,75);
glVertex2i(720,85);
glEnd();
//rallas de la calle
glColor3f(1.0 , 1.0 , 1.0);
glBegin(GL_POLYGON);
glVertex2i(840,85);
glVertex2i(840,75);
glVertex2i(900,75);
glVertex2i(900,85);
glEnd();
//saguan
glColor3f(1.0 , 1.0 , 1.0);
glBegin(GL_POLYGON);
glVertex2i(320,470);
glVertex2i(320,440);
glVertex2i(360,440);
glVertex2i(360,470);
glEnd();
//carro izquierda
// glShadeModel(GLenum GL_SMOOTH);
glColor3f(0.0,0.0,0.7);
glBegin(GL_POLYGON);
glVertex2i(200,220);
glVertex2i(120,220);
glVertex2i(80,180);
glVertex2i(240,180);
glEnd();
glColor3f(0.0 , 0.0,0.7);
glBegin(GL_QUADS);
glVertex2i(80,180);
glVertex2i(80,140);
glVertex2i(300,140);
glVertex2i(300,180);
glEnd();
//ventanas carro izquierdo
glColor3f(1.0 , 1.0,1.0);
glBegin(GL_QUADS);
glVertex2i(110,200);
glVertex2i(110,170);
glVertex2i(140,170);
glVertex2i(140,200);
glEnd();
glColor3f(1.0 , 1.0,1.0);
glBegin(GL_QUADS);
glVertex2i(160,200);
glVertex2i(160,170);
glVertex2i(200,170);
glVertex2i(200,200);
glEnd();
//llantas coche
glColor3f(0.0,0.0,0.0);//negro
circulo(120,130,25);
glColor3f(1.0,1.,1.0);//blanco
circulo(120,130,12);
glEnd();
glColor3f(0.0,0.0,0.0);//negro
circulo(260,130,25);
glColor3f(1.0,1.,1.0);//blanco
circulo(260,130,12);
glEnd();
//Sol
glColor3f(1.0 , 1.00 , 0.0);//amarillo
circulo(400,950,20);//x,y,radio
//nubes
glColor3f(1.0 , 1.0 , 1.0);//blanco
//nube grande
circulo(480,900,20);
circulo(500,900,20);
circulo(520,920,20);
circulo(540,900,20);
circulo(560,910,20);
//nube pequeña
circulo(170,900,20);
circulo(200,900,20);
circulo(210,910,20);
circulo(230,900,20);
int a;
glLineWidth(3.0);
for(a=50;a<1000;a+=50){
glBegin(GL_LINES);
glColor3f(1.0 , 0.0 , 0.0);
glVertex2i(a, 1000);
glVertex2i(a, 0);
glVertex2i(0, a);
glVertex2i(1000, a);
glEnd();
}
glBegin(GL_LINES);
glColor3f(0.0 , 0.0 , 1.0);
glVertex2i(500, 1000);
glVertex2i(500, 0);
glVertex2i(0, 500);
glVertex2i(1000, 500);
glEnd();
glFlush();
}
int main(int argc, char ** argv)
{
//Se inicializa la pantalla grafica
glutInit(&argc,argv);
//Se establece el modo de visualizacion
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
//Se establece coordenadas de pantalla
glutInitWindowSize(400,400);
//Se crea la ventana de visualizacion
glutCreateWindow("Escenario 2D");
//Se ejecuta la funcion de inicializacion de parametros
init();
glutDisplayFunc(dibuja);
glutMainLoop();
return 0;
}
Comentarios sobre la versión: 1.0 (0)
No hay comentarios