GuiaOpengl_2

86
81,9(56,’$’1$&,21$/’(/$/7,3/$12 )$&8/7$’’(,1*(1,(5,$(67$’,67,&$(,1)250$7,&$ Bloodshed Dev-C++ 4.9.9.1 Ing° Leonel Coyla Idme, M.Sc. Puno, Julio del 2009

Transcript of GuiaOpengl_2

81,9(56,'$' 1$&,21$/ '(/ $/7,3/$12)$&8/7$' '( ,1*(1,(5,$ (67$',67,&$ ( ,1)250$7,&$

Bloodshed Dev-C++ 4.9.9.1

Ing Leonel Coyla Idme, M.Sc. Puno, Julio del 2009

&RPSXWDFLyQ *UDILFD

2SHQ*/OpenGL es una interfaz de software de hardware grfico. La interfase se realiza a travs de varios procedimientos y funciones que permite al programador generar imgenes en color de alta calidad especialmente de objetos 2D y 3D. En la actualidad, es un estndar sobre grficos por computadora y uno de los ms utilizados en el mundo. Adems es compatible con cualquier plataforma hardware y muchos lenguajes de programacin. OpenGL.- 2pen *raphics /ibrary. OpenGL es una marca registrada de Silicon Graphics, Inc. (SGI) Adems OpenGL es independiente del Sistema Operativo. OpenGL realiza las siguientes operaciones: 1. Utiliza las primitivas bsicas para modelar figuras como lneas, puntos y fotografas. 2. Muestra el color de los objetos. 3. Los objetos se muestra en un espacio 3D. 4. Realiza la descripcin matemtica de los objetos. (6758&785$ '( 81 352*5$0$ (1 2SHQ*/ OpenGL considera las siguientes partes: o Realiza la Inicializacin de los estados, que se encargan de controlar el proceso de rendering. o Definir que objetos deben visualizarse, considerando su geometra y sus propiedades externas. 2EVHUYDFLyQ o 5HQGHULQJ.- Se dice as cuando la computadora genera una imagen sinttica, con sus luces y objetos, a partir de un modelo. o 0RGHOR GH XQ 2EMHWR.- Es la descripcin matemtica del objeto. 7,326 '( '$726 68),-2 B S I F D Ub Us Ui 7,32 '( '$72 Entero 8-bits Entero 16-bits Entero 32-bits Punto flotante 32-bits Punto flotante 64-bits Entero sin signo 8-bits Entero sin signo 16-bits Entero sin signo 32-bits '(),1,&,1 (1 23(1*/ '(/ 7,32 GLbyte GLshort GLint, GLsizei GLfloat, GLclampf GLdouble, GLclampd GLubyte, GLboolean GLushort GLuint,GLenum, GLbitfield

2

/HRQHO &R\OD ,GPH

(MHPSOR glVertex2i(): Define un vrtice en 2D en entero de 32 bits. glVertex2f(): Define un vrtice en 2D en float. glVertex3i(): Define un vrtice en 3D en entero de 32 bits. glColor3i(): Es la definicin de coordenadas color en entero de 32 bits. /,%5(5,$6 $8;,/,$5(6

*/8: (OpenGL Utility Library) Es el que contiene muchas rutinas se utiliza en OpenGL y es bajo nivel, adems en ella se realiza las transformaciones de matrices. */87: Es el que contiene rutinas para las ventanas, ratn, teclado, etc. *$/8; Esta realiza la misma funcin que GLUT y se realiza solo en Windows. ,167$/$&,21 '( /,%5(5,$6 3$5$ 'HY& o 8ELFDU ORV DUFKLYRV K HQ C:\Dev-Cpp\include\GL o 8ELFDU ORV DUFKLYRV OLE HQ C:\Dev-Cpp\lib o ([WUDHU ORV DUFKLYRV GOO HQ C:\Windows\system32 En la ventana que se observa, copiar en Linker lo siguiente: -lglu32 lglu32 lopengl32

3

&RPSXWDFLyQ *UDILFD

0$48,1$ '( (67$'26 Se dice as, porque cuando se activan o configuran varios estados de la mquina, sus efectos perduran hasta que sean desactivados. Sintaxis Las funciones en OpenGL comienzan con el prefijo gl y las constantes con GL. En algunas funcione, se tiene un sufijo compuesto por dos caracteres y son una cifra y una letra, donde la cifra representa el nmero de parmetros y la letra es el tipo de estos parmetros. (MHPSOR glColor3f() glVertex3i() '(),1,&,21 '( &2/25(6 )XQFLyQ JO&RORUI glColor3f (0.0, 0.0, 0.0); glColor3f (1.0, 0.0, 0.0); glColor3f (0.0, 1.0, 0.0); glColor3f (1.0, 1.0, 0.0); glColor3f (0.0, 0.0, 1.0); glColor3f (1.0, 0.0, 1.0); glColor3f (0.0, 1.0, 1.0); glColor3f (1.0, 1.0, 1.0); /,03,$5 /$ 9(17$1$ Se utiliza para limpiar el buffer considerando el parmetro y los posibles buffers son las siguientes: %XIIHU Color Buffer Depth Buffer Accumulate Buffer Stencil Buffer 1RPEUH GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT GL_ACCUM_BUFFER_BIT GL_STENCIL_BUFFER_BIT &RORU negro rojo verde amarillo azul magenta cian blanco

JO&OHDU*/B&2/25B%8))(5B%,7 _ */B'(37+B%8))(5B%,7 Ejemplo YRLG 'LEXMD7HWHUDYRLG ^ JO&OHDU*/B&2/25B%8))(5B%,7 _ */B'(37+B%8))(5B%,7 JOXW:LUH7HDSRW 4

/HRQHO &R\OD ,GPH

`

JO)OXVK JOXW6ZDS%XIIHUV

352 (alto/2) ) { esc = esc * 1.01; } else { esc = esc * 0.99; }

47

&RPSXWDFLyQ *UDILFD

glutPostRedisplay(); } int main(int argc, char **argv[]) { glutInitDisplayMode( GLUT_RGBA|GLUT_DOUBLE ); glutInitWindowPosition(0,0); glutInitWindowSize(ancho,alto); glutCreateWindow("Escalado de un Objeto 3D Raton - Teclado"); glOrtho(-(ancho/2),(ancho/2),-(alto/2),(alto/2),-profundidad,profundidad); glutDisplayFunc( dibujarEscala ); glutSpecialFunc(TecladoEspecial); glutMouseFunc( ratonEscala ); glutMotionFunc( moverEscala ); glutMainLoop(); return 0; }

48

/HRQHO &R\OD ,GPH

Ejemplo: //Rotacion de un Objeto 3D con ratn #include #include #include #include #include #define checkImageWidth 64 #define checkImageHeight 64 static GLubyte checkImage [checkImageHeight][checkImageWidth][4]; static GLuint texName; float angulo=0; int angulox=0,anguloy=0,x,y,xold,yold; char presionado; void mouse(int bouton,int estado,int x,int y); void texto(int x, int y, char *palabra); void makeCheckImage(void) { int i,j,c; glColor3f(1.0,1.0,1.0); for(i=0;i