manual de practicas de opengl

6,106 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,106
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
193
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

manual de practicas de opengl

  1. 1. CECyTEM PLANTEL TECÁMAC Manual de prácticas en OPEN GL “Dev C++”Alumna: López Bautista MarielaProfesor: René Domínguez EscalonaGrupo: 303Nº De lista: 19
  2. 2. Introducción.En este manual se podrá apreciar algunas de las principales funciones dellenguaje de programación de OPEN GL y así se podrá aplicar para diseño gráfico,se mostraran funciones principales o primitivas del programa para la realización deobjetos en el programa se verá desde lo más básico hasta lo más avanzado comopuede ser desde la elaboración de un cuadro hasta la animación de un objeto en2D & 3D.Índice.1°- Tablero de Ajedrez2°-Estrella3°- Cubo con líneas4°-Cubo delineado5°-Muñeco con triángulos6°-Piramide7°-Casita8°- Oso9°-Cubo con Cubitos10°-Muñeco con formas11°-Animación circulo12°- Nombre 3D13°-Animación sistema solar14°-Movimiento en ocho
  3. 3. 15°-Semaforo16°- Cubo 3D con líneas.1° TABLERO DE AJEDREZEn esta práctica aremos un tablero de ajedrez con cuadros unos negro y unoblanco de 8*8. La realizaremos con la primitiva GL_POINTS, comenzaremos pordefinir el color de cada cuadro con glColor3f(0.0 , 0.0 , 0.0) que sería negro, luegoel tamaño del punto glPointSize(50) y en seguida anotaremos la primitiva yamencionada glBegin(GL_POINTS).Luego de esto se pondrán las coordenadas glVertex2i(100,800); por ejemplodeberán de ser 4 coordenadas para insertar un cuadroglVertex2i(100,500);glVertex2i(100,600);glVertex2i(100,700);glVertex2i(100,800);y así lo haremos consecutivamente hasta lograr hacer el tablero indicado.
  4. 4. 2° ESTRELLAEn esta práctica haremos una estrella a base de líneas con la primitivaglBegin(GL_LINES), definiremos en tamaño de la línea y el color con:glPointSize(10);glColor3f(0.0 , 0.0 , 0.0);y comenzaremos a anotar cada una de las coordenadas para así llegar a la formade la estrella.
  5. 5. 3° CUBO CON LÍNEASEn esta práctica utilizaremos 2 primitivas glBegin(GL_QUADS) para hacercuadros y glBegin(GL_LINES); para hacer las líneas igual que practicasanteriores definiremos el color de la línea o cuadro con glColor3f(1.0 , 0.0 , 0.0);.Primero haremos la parte trasera del cubo para que se noten las líneas deenfrente y no estén cubiertas por las demás líneas o cuadros.Y de igual forma definiremos cada coordenada hasta lograr el cubo con líneas.
  6. 6. 4°CUBO DELINEADOEsta práctica la haremos como la práctica de CUBO CON LÍNEAS lo único quemodificaremos será el grosor de la línea con la instrucción glLineWidth(3) eltamaño de la línea será colocado dentro del paréntesis y le modificaremos el colorde cada lado para ver así la separación de cada lado.
  7. 7. 5°MUÑECO CON TRIÁNGULOSEn esta práctica haremos un muñeco utilizando una nueva primitivaglBegin(GL_TRIANGLES) y también primitivas ya utilizadas antes.Para esta instrucción se necesitan 3 coordenadas ya no 2 como en lasinstrucciones glBegin(GL_QUADS) o glBegin(GL_LINES)De igual forma trataremos de encontrar cada una de las coordenadas para lograrel dibujo a base de triángulos y si es necesario ocuparemos otras primitivas.Como en el caso del balón también se utiliza una nueva primitivaglBegin(GL_POLYGON) a base de 8 coordenadas.También utilizamos colores degradados. Estos se logran colocando la instrucciónde color entre las coordenadas y no solo poniéndole hasta arriba de cada grupo decoordenadas por ejemplo:glColor3f(1.0 , 1.0 , 0.0);glVertex2i(320,100);glVertex2i(340,100);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(360,80);glVertex2i(360,60);glVertex2i(340,40);glVertex2i(320,40);glColor3f(1.0 , 1.0 , 0.0);glVertex2i(300,60);
  8. 8. glVertex2i(300,80);6° PIRAMIDEEsta práctica la haremos con una nueva instrucción llamada FOR: for (i=0;i<=10;i++){ dentro de ella podemos cambiar los valores, esta instrucción funciona pararepetir alguna primitiva, ya sea cuadros, líneas etc….En esta ocasión la utilizaremos para repetir un cuadro pero que vaya aumentandosu tamaño a cierta distanciaLa instrucción va antes de que empecemos a colocar las coordenadas, ypondremos la variable dentro de las coordenadas, en este caso la variable es i ycolocando esta variable hará la instrucción for.Por ejemplo:glVertex2i(240-20*i,240-20*i);
  9. 9. glVertex2i(260+20*i,240-20*i);El 240 en el valor de x, el -20 es la separación entre el cuadro y se multiplicara pori que es la variable con la cual se efectuara el mismo cuadro.Luego de Esto haremos las líneas diagonales para simular la pirámide vista desdearriba.
  10. 10. 7° CASITA.Esta práctica es como un repaso de todas las primitivas e instrucciones vistasanteriormente. Para lograr dicho dibujo empezaremos por hacer los objetos deatrás para delante para que se puedan notar todas las figuras.Por ejemplo primero haremos la cerca con la instrucción for y se haga repetitiva lafigura y esta figura será hecha con la primitiva POLYGON.De igual forma ocuparemos for para los pinos, pero primero tenemos que hacer elpasto como ya antes mencionamos haremos primero lo que se encuentra atrás.Rejas, pasto, banqueta, calle, piedras y así sucesivamente, hasta llegar a losdetalles de la casa que serían las ultimas figuras que haremos.
  11. 11. 8°- OsoPara esta practica utilizamos una nueva instrucción que es la de el circulovoid circulo(int x, int y, int radio)y el oso lo formamos con un for for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();
  12. 12. 9°-Cubo con CubitosEsta práctica yo la exente dando una coordenada de una líneas y solo le pedí auno de mis compañeros que me prestaran su impresión de pantalla
  13. 13. 10º MUÑECO CON FORMASEn esta practica aremos un muñeco con todas las funciones y primitivas queutilizamos anteriormentePodemos utilizar un triangulo para su cabello, nariz Un circulo para su cabeza,cuadrados para sus ojos, botones, Líneas para su bica sus zapatos podría serigual para el cinturón etc.
  14. 14. 11°-Animación circuloEsta es la primera animación que relizamos y en esta utilizaremos doble bufferglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);if(x>=1 && x<500){ circulo(100+1*x,100,40); glFlush(); x++; }Para que se repita constantemente la función deveras colocar lo siguiente//Reptirif(h==500){ x=1; y=1; a=1; h=1; }
  15. 15. 12°- Nombre 3DAquí realizaremos nuestro nombre en 3D para que podamos interactuar con elPara eso necesitamos esta instrucciónvoid mover(void){ glTranslated(0,0,zoom); glRotated(girax,1.0,0.0,0.0); glRotated(giray,0.0,1.0,0.0); }Y una nueva instrucción que se llama creaMalla(void)void creaMalla(void){ int i, long_eje=10; glColor3f(1.0,1.0,0.0); glBegin(GL_LINES); for(i=-long_eje;i<=long_eje;i++){ glVertex3f(i,-long_eje,0); glVertex3f(i,long_eje,0); glVertex3f(-long_eje,i,0); glVertex3f(long_eje,i,0); glVertex3f(i,0,-long_eje); glVertex3f(i,0,long_eje); glVertex3f(-long_eje,0,i); glVertex3f(long_eje,0,i); } glEnd();
  16. 16. }
  17. 17. 13°-Animación sistema solarEn esta practica lo que tenemos que realizar es una animación parecida a la deanimación de circulo pero con diferentes pelotas en diferente velocidadPara esto es necesario utilizar diferentes variables en cada una de las pelotas ypara que el movimiento sea distinto se pondrá de la siguiente formaa=a+0.02;l=l+0.03;d=d+0.04;o=o+0.05;t=t+0.06;e=t+0.07;q=q+0.08;m=m+0.09;
  18. 18. 14°-Movimiento en ochoEsta practica es muy sencilla ya sabemos utilizar la instrucción de circulo y laanimación solo hay que ponerle dirección a la pelota para que se ejecute y le devueltas al 8else{circulo(300 + sin (b) *60,180-cos(b)*-60,10);b=b + 0.14;if(b>12.4){a=6.15;b=6.15;}for(int j=0; j<=10000000; j++) {}}
  19. 19. 15°-SemaforoEn esta practica realizaremos la animación de un semáforo en secuencia como seprende el botón verde luego el rojo y el amarilloglColor3f(0.0,1.0,0.0);if(z>=1 && z<600 && y==600 && x==800 && w==800){circulo(850,350,50);glFlush();z++;{z=1;x=1;y=1;w=1;}}glutSwapBuffers();}
  20. 20. 16°- Cubo 3D con líneas.Esta es una de las practicas mas interesantes y un poco compleja a mi parecerutilizaremos una funcion que ya teníamos creaMalla(void)void mover(void){ glTranslated(0,0,zoom); glRotated(girax,1.0,0.0,0.0); glRotated(giray,0.0,1.0,0.0); }void creaMalla(void){ int i, long_eje=10; glColor3f(1.0,1.0,0.0); glBegin(GL_LINES); for(i=-long_eje;i<=long_eje;i++){ glVertex3f(i,-long_eje,0); glVertex3f(i,long_eje,0); glVertex3f(-long_eje,i,0); glVertex3f(long_eje,i,0); glVertex3f(i,0,-long_eje); glVertex3f(i,0,long_eje); glVertex3f(-long_eje,0,i); glVertex3f(long_eje,0,i); } glEnd(); }

×