de la librera OpenGL a un proyecto Fecha de entrega: OBJ!I"O#: Conocer la manera en que se incluye la librera !"enG# "ara su uso en un "royecto de Code$loc%s y utili&ar algunas funciones de la librera "ara la creacin de 'entanas( I$!%O&'CCI($: En esta "r)ctica se le "ro"orciona el cdigo mnimo necesario "ara im"lementar a"licaciones en !"enG#( Este cdigo es el encargado de crear una 'entana* darle una "osicin dentro de la "antalla* asignarle dimensiones* establecer un color de fondo y "ro"orcionarle un ttulo(
+ntes de em"e&ar instale el "rograma Code$loc%s "ara ,indo-s* el instalador se encuentra en la "lataforma .+C/ !nline 0tambi1n lo "uede obtener de la siguiente ")gina ,eb: htt":22---(codebloc%s(org23( 4i lo descarga directamente de Internet* aseg5rese de descargar la 'ersin que contiene el "aquete 6inG, 0usualmente con el nombre: codeblocks-XX.XXmingw-setup.exe* donde 77(77 es el n5mero de 'ersin3( Instale las o"ciones "redeterminadas( )'$CIO$# & L* LIB%%+* OP$GL * '!ILI,*%: o void glClear (GLbitfield mscara) Funcin (8 #im"ia los buffers es"ecificados asign)ndoles los 'alores actuales( El argumento mscara "uede tener los siguientes 'alores: Bu--er $o.bre $uffer de color G#9C!#!:9$.FFE:9$I; $uffer de fondo G#9<E=;>9$.FFE:9$I; $uffer de acumulacin G#9+CC.69$.FFE:9$I; $uffer de "atrn G#94;E?CI#9$.FFE:9$I; GLbitfield(8 Cam"o de 3@ bits( EAem"lo: glClear(GL_COLOR_BUFFER_BIT); //limpia el buffer de color o void gl!lus" (void) Funcin (8 El comando glFlu!() causa la eAecucin de cualquier comando en es"era( EAem"lo: glFlu!(); o void glClearColor(GLclampf ro#o$ GLclampf verde$ GLclampf a%ul$ GLclampf alfa) Funcin (8 Establece el color actual que 'a a a"arecer en el fondo de la 'entana en modo :G$( GLclampf(8 es un ti"o de datos real* "or lo tanto estos argumentos toman 'alores en el inter'alo BC* 1D( ro#o(8 la com"onente roAa del 'alor de relleno( verde(8 la com"onente 'erde del 'alor de relleno( a%ul/0 la com"onente a&ul del 'alor de relleno( alfa/0 la com"onente alfa del 'alor de relleno( EAem"lo: glClearColor("#"$"#"$"#"$"#"); //e e%ablece el color &egro //como fo&do de la 'e&%a&a# o void glut&nit('argc$ argv) Funcin (8 Esta funcin es la que iniciali&a la librera G#.;* y negocia con el sistema de 'entanas "ara abrir una( :ecibe dos "ar)metros* que son los "ar)metros que son recibidos "or el main desde la lnea de comando( EAem"lo: glClearColor((argc$ arg'); o void glut&nit(indow)osition (int x$ int *) Funcin (8 Con esta funcin fiAamos la "osicin inicial de las 'entanas que se creen( EAem"lo: glu%I&i%)i&do*+oi%io&(,""$ ,""); //Coloca la e-ui&a //uperior i.-uierda de la 'e&%a&a e& la //coorde&ada(,""$,"") o void glut&nit(indow+i%e (int anc"o$ int alto) Funcin (8 Esta rutina sir'e "ara indicar el tamaEo inicial de las 'entanas que se creen( ancho (8 anchura de la 'entana en "iFeles( alto (8 altura de la 'entana en "iFeles( EAem"lo: glu%I&i%)i&do*/i.e(0"$ 1"); //2ig&a a la 'e&%a&a u& %ama3o //de 0" de a&c!o 4 1" de al%o# o int glutCreate(indow (c"ar ,nombre) Funcin (8 Esta funcin crea una 'entana "rinci"al( Cuando se crea una 'entana* la 'entana acti'a "asa a ser esta nue'a 'entana( ,nombre(8 cadena de caracteres con el nombre de la 'entana( EAem"lo: glu%Crea%e)i&do*(5T6%ulo7); //Crea u&a 'e&%a&a 4 aig&a //5T6%ulo7 e& la barra de //%6%ulo de la 'e&%a&a# o void glut-ispla*!unc (void (,funci.n) (void)) Funcin (8 :egistra la funcin que res"onde al e'ento de redibuAado de la 'entana acti'a( G#.; no "ro"orciona una funcin de res"uesta "or defecto "ara el redibuAado* "or lo que es obligatorio escribir una funcin de este ti"o "ara cada 'entana creada( 4i se crea una 'entana y no se registra la funcin de res"uesta al redibuAado* se "roduce un error( (,funci.n)(8 funcin de res"uesta al e'ento( EAem"lo: glu%8ipla4Fu&c(dipla4_cb); //la fu&ci9& glu%8ipla4Fu&c //ma&da llamar a la fu&ci9& dipla4_cb //cada 'e. -ue la dime&io&e de la //'e&%a&a o& modificada# o void glut/ainLoop(void) Funcin (8 Esta funcin im"lementa un ciclo infinito que se encarga de consultar la cola de e'entos y de res"onder a cada uno de ellos eAecutando una funcin( #a funcin que se eAecuta cuando se "roduce un e'ento debe ser escrita "or el "rogramador y registrada como una funcin de res"uesta 0callbac:3( <e esta manera* G#.; sabe a qu1 funcin llamar "ara res"onder a un determinado e'ento( Esta rutina debe llamarse una 'e& en el "rograma( =uesto que im"lementa un ciclo infinito 0realmente el ciclo termina cuando se "roduce un e'ento de cerrar a"licacin3* la funcin no termina nunca( =or ello es necesario registrar "re'iamente las funciones callbac: y que* adem)s* la llamada a esta funcin sea la 5ltima de main( EAem"lo: glu%;ai&Loop();
&#*%%OLLO: =ara incluir la librera !"enG# en su a"licacin deber) seguir los siguientes "asos: 1( +dquirir los archi'os: glu%<=#dll$ libglu%<=#a$ glu%#! de la "lataforma .+C/ !nline* los cuales son es"ecialmente "ara Code$loc%s 0no "ara Gisual 4tudio3( @( Co"iar los archi'os en los siguientes directorios: glu%<=#dll C:H,indo-sH4ystem3@H 0si es un sistema de 3@ bits3 C:H,indo-sH4ys,!,6IH 0si es un sistema de 6I bits3 libglu%<=#a C:H=rogram FilesHCode$loc%sH6inG,HlibH glu%#! C>?+rogram File?CodeBloc:?;i&G)?i&clude?GL 3( +brir el "rograma Code$loc%s 0si "regunta cual com"ilador usar* seleccione JG?. GCC Com"ilerK3 I( Crear un "royecto( .na forma de crear un "royecto es siguiendo la siguiente secuencia de "asos: Para crear un proyecto nue1o: File( ?e-( =roAect( <e la 'entana seleccione JEm"ty "roAectK y de clic% en JGoK ?eFt( Introdu&ca el nombre del "royecto en J=roAect titleK y el folder donde desea guardar el "royecto en JFolder to create =roAect inK deAando los dos 5ltimos cam"os con su 'alor default( ?eFt( +seg5rese de que en JCom"ilerK este seleccionado JG?. GCC Com"ilerK Finish( Para a2re2ar un /cpp nue1o al proyecto: File( ?e- Em"ty file( 0seleccione JLesK si "regunta3 4eleccione la ruta de su "royecto y guarde el (c"" con el nombre deseado( 6arque las o"ciones J<ebugK y J:eleaseK cuando le sea "reguntado( Para a2re2ar las libreras de OpenGL al proyecto: <e clic% derecho en su "royecto que esta en el )rbol del "anel de la i&quierda 0<ebaAo de ,or%s"ace3 y seleccione J$uild !"tionsMK Galla a la "estaEa J#in%er 4ettingsK* en la "arte J#in% #ibrariesK de clic% en J+ddK y agregue una "or una las siguientes libreras sin comillas: Jo"engl3@K* Jglu3@K y Jglut3@K( =or ultimo de clic% en !N( O( Escriba el siguiente cdigo( Com"lelo* crralo y aseg5rese de que se eAecuta sin errores( Pinclude Q-indo-s(hR Pinclude QG#2glut(hR 'oid dis"lay9cb 0'oid3 S glClear 0G#9C!#!:9$.FFE:9$I;3T glFlush03T U 'oid iniciali&acion 0'oid3 S glClearColor 01(C* 1(C* 1(C* C(C3T U int main 0int argc* charVV arg'3 S glutInit 0Wargc* arg'3T glutInit<is"lay6ode 0G#.;94I?G#E X G#.;9:G$3T glutInit,indo-4i&e 06CC* ICC3T glutCreate,indo- 0YCodigo minimoY3T glut<is"layFunc 0dis"lay9cb3T iniciali&acion03T glut6ain#oo"03T return CT U 6( EF"erimente con el uso de las funciones: glClearColor()* glu%I&i%)i&do*+oi%io&()* glu%I&i%)i&do*/i.e() y glu%Crea%e)i&do*()(