Está en la página 1de 4

Tutorial 1 : Opening a window

Introduction
Bienvenidos al primer tutorial! Antes de entrar en OpenGL, primero aprender a construir el cdigo que va con cada tutorial, cmo ha de hacerlo, y lo ms importante, la forma de jugar con el cdigo manualmente.

Prerequisites
No se necesita ningn requisito especial para seguir estos tutoriales. La experiencia con cualquier lenguaje de programacin (C, Java, Lisp, Javascript, lo que sea) es mejor para entender completamente el cdigo, pero no es necesario, es ms complicado aprender dos cosas al mismo tiempo. Todos los tutoriales estn escritos en "fcil C + +": un montn de esfuerzo se ha hecho para que el cdigo sea lo ms simple posible. No hay plantillas, no hay clases, no hay punteros. De esta manera, usted ser capaz de entender todo, incluso si slo sabe Java.

Forget Everything
Usted no tiene que saber nada, pero ha de olvidarse de todo lo que sabe acerca de OpenGL. Si conoces de algo que se parece a glBegin (), olvdalo. Aqu aprenders OpenGL moderno (OpenGL 3 y 4), y la mayora de los tutoriales en lnea ensean "viejo" OpenGL (OpenGL 1 y 2).

Building the tutorials


Building on Windows 1. 2. 3. 4. 5. Actualice los controladores de la tarjeta grfica. Sugerimos el uso de Visual Studio 2010 Express como compilador. Descargue e instale la utilidad CMake. Descargue el cdigo fuente y descomprimelo, por ejemplo en C:\Users\XYZ\Projects\OpenGLTutorials\ . Lance CMake.En la primera linea, vaya a la carpeta descomprimida anterior. Si no est seguro, seleccione la carpeta que contiene el archivo CMakeLists.txt. En la segunda linea, introduzca donde quiere las cosas para el compilador. Por ejemplo, puede escoger C:\Users\XYZ\Projects\OpenGLTutorials-build-Visual2010-32bits\, o C:\Users\XYZ\Projects\OpenGLTutorials\build\Visual2010-32bits\. Observe que puede ser cualquier lugar, no necesariamente la misma carpeta..

6. Haga clic en el botn Configurar. Dado que esta es la primera vez que configura el proyecto, CMake le preguntar cul compilador que desea utilizar. Elija con cuidado en funcin de la etapa 1.Si tienes un Windows de 64 bits, se puede elegir 64 bits, y si usted no lo sabe, elija 32 bits. 7. Haga clic en Configurar hasta que todas las lneas rojas desaparecen. Haga clic en Generar. Ahora se crea el proyecto de Visual Studio. Usted puede olvidarse de CMake; desinstalarlo si lo desea. 8. Abra C:\Users\XYZ\Projects\OpenGLTutorials-build-Visual2010-32bits\. Usted ver un archivo Tutorials.sln file : bralo con

Visual Studio.

En el men Build, haga click en Build All. Se recopilarn Cada tutorial y la dependencia.Cada ejecutable tambin se copiar de nuevo en C:\Users\XYZ\Projects\OpenGLTutorials\ .Con suerte no se produce ningn error.

9. Open C:\Users\XYZ\Projects\OpenGLTutorials\playground, y lance playground.exe. Aparecer una ventana en negro.

Tambin puede iniciar ningn tutorial desde dentro de Visual Studio, pero usted tendr que configurar el directorio de trabajo primero: haga clic en Playground, vaya a Properties, eliga Debugging, Working Directory, Browse, y vaya hasta C:\Users\XYZ\Projects\OpenGLTutorials\playground\. Validar. Click derecho en Playground otra vez, Choose as startup project. Ahora puede depurar el cdigo pulsando F5.

Running the tutorials

Debe ejecutar las mismas directamente desde el directorio correcto: haga doble clic en el ejecutable. Si te gusta la lnea de comandos mejor, cd al directorio correcto. Si desea ejecutar los tutoriales del IDE, no se olvide de leer las instrucciones anteriores para configurar el directorio de trabajo correcto.

How to follow these tutorials


Cada tutorial viene con su cdigo fuente y los datos, que se puede encontrar en tutorialXX /. Sin embargo, nunca modifique estos proyectos: son slo de referencia. Abrir playground/playground.cpp y modifique este archivo en su lugar. Torturelo en cualquier forma que desee. Si se pierde, simplemente corte y pegue algn tutorial en l, y todo debera volver a la normalidad. Vamos a ofrecer fragmentos de cdigo a lo largo de los tutoriales. No dude en copiar y pegarlos directamente en el playground, mientras usted est leyendo: la experimentacin es buena. Evite la simple lectura del cdigo final, no va a aprender mucho de esta manera. Incluso con una simple copiar y pegar, tendr su bote lleno de problemas.

Opening a window
Por fin! Cdigo OpenGL! Bueno, en realidad no. Todos los tutoriales le muestran la manera "de bajo nivel" de hacer las cosas, de manera que se puede ver que no es magia. Pero esta parte es realmente muy aburrido e intil, por lo que vamos a utilizar GLFW, una biblioteca externa, para que haga esto para nosotros. Si realmente quisiera, podra utilizar la API de Win32 en Windows, el API X11 en Linux, y la API de Cocoa en Mac, o utilizar otra biblioteca como SFML, FREEGLUT, SDL, ... ver la pgina de Links . Ok, vamos. En primer lugar, vamos a tener que hacer frente a las dependencias: hay algunas cosas bsicas para mostrar mensajes en la consola:

1 2 3

/ /I n c l u d es t a n d a r dh e a d e r s # i n c l u d e< s t d i o . h > # i n c l u d e< s t d l i b . h >

Primero, GLEW. 1 2
/ /I n c l u d eG L E W .A l w a y si n c l u d ei tb e f o r eg l . ha n dg l f w . h ,s i n c ei t ' sab i tm a g i c . # i n c l u d e< G L / g l e w . h >

Hemos decidido que GLFW maneje la ventana y el teclado, as que vamos a incluirlo tambin:

1 2

/ /I n c l u d eG L F W # i n c l u d e< G L / g l f w . h >

No necesitamos esto ahora, pero esto es una librera para matemticas 3D. Esto ser de gran utilidad en breve. No hay magia en GLM, es slo prctico. El uso de using namespace est ah para evitar tener que escribir glm::vec3, en lugar de vec3 .

1 2 3

/ /I n c l u d eG L M # i n c l u d e< g l m / g l m . h p p > u s i n gn a m e s p a c eg l m ;

Si tu copias y pegas todos estos #includes en playground.cpp, el compilador se quejar de que no hay una funcin main(). As que creemos una:

i n tm a i n ( ) {

Lo primero que hacemos es inicializar GLFW :

1 2 3 4 5 6

/ /I n i t i a l i s eG L F W i f (! g l f w I n i t ( )) { f p r i n t f (s t d e r r ," F a i l e dt oi n i t i a l i z eG L F W \ n ") ; r e t u r n1 ; }

Ahora podemos crear nuestra ventana OpenGL !

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

g l f w O p e n W i n d o w H i n t ( G L F W _ F S A A _ S A M P L E S ,4 ) ;/ /4 xa n t i a l i a s i n g g l f w O p e n W i n d o w H i n t ( G L F W _ O P E N G L _ V E R S I O N _ M A J O R ,3 ) ;/ /W ew a n tO p e n G L3 . 3 g l f w O p e n W i n d o w H i n t ( G L F W _ O P E N G L _ V E R S I O N _ M I N O R ,3 ) ; g l f w O p e n W i n d o w H i n t ( G L F W _ O P E N G L _ P R O F I L E ,G L F W _ O P E N G L _ C O R E _ P R O F I L E ) ;/ / W ed o n ' tw a n tt h eo l dO p e n G L / /O p e naw i n d o wa n dc r e a t ei t sO p e n G Lc o n t e x t i f (! g l f w O p e n W i n d o w (1 0 2 4 ,7 6 8 ,0 , 0 , 0 , 0 ,3 2 , 0 ,G L F W _ W I N D O W)) { f p r i n t f (s t d e r r ," F a i l e dt oo p e nG L F Ww i n d o w \ n ") ; g l f w T e r m i n a t e ( ) ; r e t u r n1 ; } / /I n i t i a l i z eG L E W g l e w E x p e r i m e n t a l = t r u e ;/ /N e e d e di nc o r ep r o f i l e i f( g l e w I n i t ( )! =G L E W _ O K ){ f p r i n t f ( s t d e r r ," F a i l e dt oi n i t i a l i z eG L E W \ n " ) ; r e t u r n1 ; } g l f w S e t W i n d o w T i t l e (" T u t o r i a l0 1 ") ;

Compila y ejecuta. Una ventana debera aparecer y cerrarse de inmediato. Naturalmente ! Necesitamos que espere hasta que el usuario pulse la tecla ESCAPE :

1 2 3 4 5 6 7 8 9 10 11 12

/ /E n s u r ew ec a nc a p t u r et h ee s c a p ek e yb e i n gp r e s s e db e l o w g l f w E n a b l e (G L F W _ S T I C K Y _ K E Y S) ; d o { / /D r a wn o t h i n g ,s e ey o ui nt u t o r i a l2! / /S w a pb u f f e r s g l f w S w a p B u f f e r s ( ) ; }/ /C h e c ki ft h eE S Ck e yw a sp r e s s e do rt h ew i n d o ww a sc l o s e d w h i l e (g l f w G e t K e y (G L F W _ K E Y _ E S C)! =G L F W _ P R E S S& & g l f w G e t W i n d o w P a r a m (G L F W _ O P E N E D)) ;