SlideShare a Scribd company logo
1 of 67
Download to read offline
Intro a OpenGL ES 2.0
        para iOS
    Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
¿Qué necesito saber?


•   C / Objective C

•   Concepto de Vista y
    ViewController




            Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
¿Qué es OpenGL?

• API de C para producir gráficos 3D
• Multiplataforma
• Antiguo: 1992
• Parte en la GPU, parte en la CPU

       Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Conceptos
Fundamentales




Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Un poco de Historia

Developers, developers,                                          • Creado por SGI en 1992
                                                                 • MS intentó acabar con él
     developers!



                                                                          en 1997...
                                                                 • ...pero los “developers,
                                                                          developers, developers!”
                                                                          ganaron la batalla.


                          Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
...y la Historia sigue

• Mantenido por el Khronos Group
• Nuevas versiones: OpenGL 2.0 y ES
• Sigue siendo el estandar de facto para
  gráficos 3D.
• Lo seguirá siendo por bastante tiempo

        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Con el tiempo...

                                                                         • Complejo
                                                                         • Anticuado
                                                                         • Había que
                                                                                 poner orden



 Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
OpenGL 2.0

• Elimina todo lo antiguo y sub-óptimo
• Adaptado a las nuevas GPUs
• Más “programable”: shaders


        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
OpenGL ES


•   Embedded Systems

•   Subconjunto de OpenGL




          Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
OpenCL
•   ¿Tiene algo que ver?

•   Sólo para Mac

•   Todavía no utilizable en
    iOS

•   La esperanza es lo último
    que se pierde

•   Hay chapuzas para ir
    consolándose (shaders).


            Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
GLKit




          Y dijo Jobs a sus discípulos:
“Que lo común sea trivial y lo difícil sea factible”

          Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Renderizado


Crear una imagen a partir de una descripción
geométrica y de algunos datos más necesarios
para crear la ilusión de 3 dimensiones.




       Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
GPU vs CPU
• Procesa vectores de números de coma
  flotante en paralelo
• A toda ostia
• Es programable (OpenCL & Shaders)
• Nadie mejor que NVidia y los Myth Busters
  para explicarlo. ;-)


        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Cuellos de Botella

• CPU: Mil millones de operaciones por
  segundo.
• GPU: Decenas de miles de millones de
  operaciones por segundo.
• Memoria: 200 millones de accesos por
  segundo.


        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Buffers

• Forma Óptima de Proporcionar Datos
• Área continua de memoria bajo control de
  la GPU, que se utiliza para la entrada y
  salida de datos de la forma más eficiente
  posible.



       Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
El Noble Octuple Sendero
 hacia el Nirvana del Buffer
                                           1 Crear
     8 eliminar                                                                          2 Enlazar


7 Desactivar                                                                                      3 Inicializar



   6 Dibujar                                                                                4 Activar
                                5 Asignar Tipo
          Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
1 Crear
•   Generate

•   OpenGL crea un ID
    único para identificar el
    buffer.

•   A este ID numérico a
    menudo se le llama
    "name".

•   Si, ya lo sé... ;-)


              Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
2 Enlazar

•   Bind

•   Asignamos el buffer a
    OpenGL para que pueda
    usarlo.

•   Sigue sin haber datos.




             Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
3 Inicializar

•   Init buffer data

•   El buffer no tiene
    estructura

•   Paso costoso




            Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
4 Activar

•   Enable

•   Indica a OpenGL que
    pase a usar un buffer
    para un renderizado.




             Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
5 Asignar Tipo

•   Set Pointers

•   Indica a OpenGL el tipo
    de los datos en el buffer
    y los offsets para
    acceder a los datos.

•   Fácil cagarla.




             Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
6 Dibujar

•   Draw o Render

•   Indica a OpenGL que
    renderice todo o parte
    de una escena usando
    los buffers enlazados y
    activos.




            Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
7 Desactivar


•   Disable

•   Indica a OpenGL que se
    olvide de un buffer.




              Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
8 Eliminar

•   Delete

•   Eliminamos un buffer y
    liberamos su memoria.

•   Potencialmente
    problemático por
    sincronización entre
    CPU y GPU




             Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Recomendaciones

•   Una vez creado un
    buffer, reaprovéchalo.

•   Inicializar es caro.

•   Destruir también, pero
    por otras razones.




             Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Frame Buffers

• Son los buffers de salida.
• Reciben la imagen.
• Front Frame Buffer.
• Back Frame Buffer.

        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Contexto de OpenGL

• Contiene toda la configuración necesaria
  para renderizar.
• Frame buffer, buffers de entrada, texturas y
  demás.
• Similar al contexto de Core Graphics

        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Sistema de Coordenadas &
             Vectores
•   Usamos el cartesiano

•   Todo punto se
    representa como un
    vector.

•   La principal entrada de
    un programa OpenGL
    será una serie de
    vectores que definen los
    vértices (puntos) de una
    escena.


            Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Vértices, puntos,
segmentos y triángulos
• OpenGL usa vértices para renderizar
  puntos, segmentos y triángulos:
 • Punto: 1 vértice
 • Segmentos: 2 vértices
 • Triángulo: 3 vértices

       Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Tipos
• OpenGL es multiplataforma, así que define
  sus propios tipos mediante enums.
• Todos empiezan con GL (se han partío el
  coco)
 • GLFloat, GLDouble, GLBoolean, etc...
 • GLclampf: GLFloat entre 0.0 1.0
 • Ojo, ¡especifica siempre float!
          Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Funciones




              Crea un color RGB



Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
OpenGL ES
                                  en iOS




Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Limitaciones en iOS

•   No asignas los front y
    back buffers. Lo hace
    iOS por ti.

•   El frame buffer está
    conectado a una
    CALayer y comparten el
    bitmap.




            Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
GLKViewController &
     GLKView
• GLKView: tiene su rootlayer conectada a
  un frame buffer y cambia del front al back.
• El controlador es el delegado de la vista y
  se encarga del dibuja y adaptar a la
  orientación.

-(void) glkView:(GLKView *)view 
     drawInRect:(CGRect)rect


        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
GLKBaseEffect
•   Proporciona un entorno por defecto

    •   luces

    •   texturas

    •   “niebla”

    •   Shaders por defecto

•   Abstrae las diferencias entre OpenGL 1.0 y 2.0


            Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Llegados a este punto...




                       Suele pasar esto

    Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Mejor será que
       vayamos a Xcode
•   Un proyecto de una sola
    vista (GLKView,
    GLKViewController).

•   Un GLKBaseEffect

•   3 vértices (un triángulo)




            Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Abstraer C


• ATGLKContext
• ATVertexArrayBuffer


       Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Animaciones

• Periódicamente cambiaremos la posición de
  los vértices y le pediremos a OpenGL ES
  que dibuje de nuevo.
• GLKViewController nos facilita
  enormemente la labor.



        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
GLKViewController al
      rescate

• preferedFramesPerSecond
• framesPerSecond
• -(void) update


       Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Volvamos a Xcode

•   Añadimos nuestras dos
    clases.

•   Asignamos un
    preferedFramesPerSecond
    de 60.

•   Recalculamos los vértices
    y los dibujamos en update




             Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Texturas

• Forma sencilla de asignar un color a cada
  pixel.
• Otro buffer de OpenGL con un mapa de
  bits.
• Mapeamos puntos del buffer de vértices al
  de textura.


           Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Tamaño de la Textura

• Lo menor posible.
• En sistemas empotrados, suele estar
  limitado.
• Si las dimensiones son potencias de 2, la
  GPU lo agradece.



        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Texels
           {0,1}                                                                                      {1,1}




           T

                                                                                                      {1,0}
            {0,0}

                                                           S
Independientemente de las proporciones de la imagen, la textura tendra 1x1.



               Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Tipos de texturas

• 1D: 1 pixel por n
• 2D: n x m pixels (las más comunes)
• 3D: una pila de 2D


        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Mapeados

• Transformar un espacio vectorial en otro
• Del espacio del frame buffer al de pantalla
  (viewport)
• Del de vértices al de textura

        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Mapear Vértices a
        Texels

• Cada vértice tendrá:
 • Posición:Vector 3D
 • Coordenadas de textura:Vector 2D


       Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Mapear Vértices a
     Texels
Vértice                                                                                     Textura
Posición
x,y,z                                                                               T


 Color
   u
   v                                                                                S

       Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Mapear Vértices a
        Texels


• Cada vértice coloreado se llama Fragment



       Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Mapear Vértices a
        Texels
• Una vez hecha la transformación, la GPU
  asigna color a cada pixel.
• A este proceso, de pasar de datos
  geométricos a pixeles, se le llama rasterizar.
• A cada pixel coloreado, se le
  llama fragment.


        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Calma que ya falta
           poco...
•   One more thing!

•   Si vértices y texels
    coinciden, el mapeado es
    de uno a uno.

•   Pero... ¿y si no
    coinciden, qué coño
    hacemos?
Funciones de Mapeado
  “Sampling Modes”
• Dos funciones
 • Nearest
 • Interpolate
• glTexParameteri al rescate

      Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Funciones de Mapeado
  “Sampling Modes”

• Nearest: Aspecto pixelado
• Interpolated: Aspecto suave pero es
  costoso.




        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
MIP Mapping: La Trampa

 “El Golpe” consiste en crear
 varias versiones de la
 textura en distintas
 resoluciones.




        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Cargar un textura en
              GLKBaseEffects
           Usamos GLKTextureLoader para darnos un
           GLKTextureInfo a partir de una CGImage.

     // Setup texture
    UIImage *texture = [UIImage imageNamed:@"GrungePaint.jpg"];
    NSError *err = nil;
    GLKTextureInfo *textureInfo = [GLKTextureLoadertextureWithCGImage:[texture CGImage]
                                                              options:nil
                                                                error:&err];
    if (!textureInfo) {
        NSLog(@"Error while loading texture: %@", [err localizedDescription]);
    }
    
    self.baseEffect.texture2d0.name = textureInfo.name;
    self.baseEffect.texture2d0.target = textureInfo.target;




                       Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Volvamos a Xcode


•   Aplicaremos una textura
    al triángulo.




             Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Aquí hay gato
          encerrado...
• Lo normal no es tener 1
  triángulo, sino miles o
  millones...
• ¿Los escribo a mano?
• Blender, obj & Cia

        Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Mucho por ver
Esto no es una foto...




    Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Libros


•   The OpenGL
    SuperBible, 4th Edition

•   Learning OpenGL ES




            Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
Contacto

                                                         • Fernando Rodríguez
                                                         • @frr149
                                                         • www.agbo.biz


Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz

More Related Content

Similar to Taller OpenGL

Android Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasAndroid Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasJorge Martín Espinosa
 
Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript
Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript
Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript Motorola Mobility - MOTODEV
 
Móviles, iPhone y Android
Móviles, iPhone y AndroidMóviles, iPhone y Android
Móviles, iPhone y AndroidSvet Ivantchev
 
Grails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGrails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGailen Tecnologías
 
Frameworks para el desarrollo de juegos para dispositivo móviles
Frameworks para el desarrollo de juegos para dispositivo móvilesFrameworks para el desarrollo de juegos para dispositivo móviles
Frameworks para el desarrollo de juegos para dispositivo móvilesADWE Team
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Guillermo González
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Guillermo González
 
Desarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGapDesarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGapbetabeers
 
Charla 1er betabeers Córdoba
Charla 1er betabeers CórdobaCharla 1er betabeers Córdoba
Charla 1er betabeers CórdobaLuis Muñoz Hueso
 
Higuitaandres11022013@gmail.com (2)
Higuitaandres11022013@gmail.com (2)Higuitaandres11022013@gmail.com (2)
Higuitaandres11022013@gmail.com (2)Christian Arango
 
Modo retenido modo inmediato
Modo retenido  modo inmediatoModo retenido  modo inmediato
Modo retenido modo inmediatoYeko Macias Bsc
 
Iniciacion a Cocos2d en @bcndevcon
Iniciacion a Cocos2d en @bcndevconIniciacion a Cocos2d en @bcndevcon
Iniciacion a Cocos2d en @bcndevconKeepCoding
 

Similar to Taller OpenGL (20)

Steven1
Steven1Steven1
Steven1
 
Android Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasAndroid Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajas
 
Charla introducción a processing - 2010/09
Charla introducción a processing - 2010/09Charla introducción a processing - 2010/09
Charla introducción a processing - 2010/09
 
NSCoder - Metal
NSCoder - MetalNSCoder - Metal
NSCoder - Metal
 
Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript
Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript
Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript
 
SIMUNROBOT
SIMUNROBOTSIMUNROBOT
SIMUNROBOT
 
Móviles, iPhone y Android
Móviles, iPhone y AndroidMóviles, iPhone y Android
Móviles, iPhone y Android
 
Grails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGrails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacional
 
04 android studio
04 android studio04 android studio
04 android studio
 
Frameworks para el desarrollo de juegos para dispositivo móviles
Frameworks para el desarrollo de juegos para dispositivo móvilesFrameworks para el desarrollo de juegos para dispositivo móviles
Frameworks para el desarrollo de juegos para dispositivo móviles
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016
 
Desarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGapDesarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGap
 
Charla 1er betabeers Córdoba
Charla 1er betabeers CórdobaCharla 1er betabeers Córdoba
Charla 1er betabeers Córdoba
 
Higuitaandres11022013@gmail.com (2)
Higuitaandres11022013@gmail.com (2)Higuitaandres11022013@gmail.com (2)
Higuitaandres11022013@gmail.com (2)
 
Modo retenido modo inmediato
Modo retenido  modo inmediatoModo retenido  modo inmediato
Modo retenido modo inmediato
 
avanttic - webinar: Oracle Database 12c (24-03-2015)
avanttic - webinar: Oracle Database 12c (24-03-2015)avanttic - webinar: Oracle Database 12c (24-03-2015)
avanttic - webinar: Oracle Database 12c (24-03-2015)
 
Presentacion cw2012
Presentacion cw2012Presentacion cw2012
Presentacion cw2012
 
Iniciacion a Cocos2d en @bcndevcon
Iniciacion a Cocos2d en @bcndevconIniciacion a Cocos2d en @bcndevcon
Iniciacion a Cocos2d en @bcndevcon
 
Frameworks iOS
Frameworks iOSFrameworks iOS
Frameworks iOS
 

Recently uploaded

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 

Recently uploaded (19)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 

Taller OpenGL

  • 1. Intro a OpenGL ES 2.0 para iOS Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 2. ¿Qué necesito saber? • C / Objective C • Concepto de Vista y ViewController Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 3. ¿Qué es OpenGL? • API de C para producir gráficos 3D • Multiplataforma • Antiguo: 1992 • Parte en la GPU, parte en la CPU Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 4. Conceptos Fundamentales Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 5. Un poco de Historia Developers, developers, • Creado por SGI en 1992 • MS intentó acabar con él developers! en 1997... • ...pero los “developers, developers, developers!” ganaron la batalla. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 6. ...y la Historia sigue • Mantenido por el Khronos Group • Nuevas versiones: OpenGL 2.0 y ES • Sigue siendo el estandar de facto para gráficos 3D. • Lo seguirá siendo por bastante tiempo Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 7. Con el tiempo... • Complejo • Anticuado • Había que poner orden Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 8. OpenGL 2.0 • Elimina todo lo antiguo y sub-óptimo • Adaptado a las nuevas GPUs • Más “programable”: shaders Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 9. OpenGL ES • Embedded Systems • Subconjunto de OpenGL Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 10. OpenCL • ¿Tiene algo que ver? • Sólo para Mac • Todavía no utilizable en iOS • La esperanza es lo último que se pierde • Hay chapuzas para ir consolándose (shaders). Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 11. GLKit Y dijo Jobs a sus discípulos: “Que lo común sea trivial y lo difícil sea factible” Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 12. Renderizado Crear una imagen a partir de una descripción geométrica y de algunos datos más necesarios para crear la ilusión de 3 dimensiones. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 13. GPU vs CPU • Procesa vectores de números de coma flotante en paralelo • A toda ostia • Es programable (OpenCL & Shaders) • Nadie mejor que NVidia y los Myth Busters para explicarlo. ;-) Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 14. Cuellos de Botella • CPU: Mil millones de operaciones por segundo. • GPU: Decenas de miles de millones de operaciones por segundo. • Memoria: 200 millones de accesos por segundo. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 15. Buffers • Forma Óptima de Proporcionar Datos • Área continua de memoria bajo control de la GPU, que se utiliza para la entrada y salida de datos de la forma más eficiente posible. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 16. El Noble Octuple Sendero hacia el Nirvana del Buffer 1 Crear 8 eliminar 2 Enlazar 7 Desactivar 3 Inicializar 6 Dibujar 4 Activar 5 Asignar Tipo Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 17. 1 Crear • Generate • OpenGL crea un ID único para identificar el buffer. • A este ID numérico a menudo se le llama "name". • Si, ya lo sé... ;-) Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 18. 2 Enlazar • Bind • Asignamos el buffer a OpenGL para que pueda usarlo. • Sigue sin haber datos. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 19. 3 Inicializar • Init buffer data • El buffer no tiene estructura • Paso costoso Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 20. 4 Activar • Enable • Indica a OpenGL que pase a usar un buffer para un renderizado. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 21. 5 Asignar Tipo • Set Pointers • Indica a OpenGL el tipo de los datos en el buffer y los offsets para acceder a los datos. • Fácil cagarla. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 22. 6 Dibujar • Draw o Render • Indica a OpenGL que renderice todo o parte de una escena usando los buffers enlazados y activos. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 23. 7 Desactivar • Disable • Indica a OpenGL que se olvide de un buffer. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 24. 8 Eliminar • Delete • Eliminamos un buffer y liberamos su memoria. • Potencialmente problemático por sincronización entre CPU y GPU Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 25. Recomendaciones • Una vez creado un buffer, reaprovéchalo. • Inicializar es caro. • Destruir también, pero por otras razones. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 26. Frame Buffers • Son los buffers de salida. • Reciben la imagen. • Front Frame Buffer. • Back Frame Buffer. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 27. Contexto de OpenGL • Contiene toda la configuración necesaria para renderizar. • Frame buffer, buffers de entrada, texturas y demás. • Similar al contexto de Core Graphics Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 28. Sistema de Coordenadas & Vectores • Usamos el cartesiano • Todo punto se representa como un vector. • La principal entrada de un programa OpenGL será una serie de vectores que definen los vértices (puntos) de una escena. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 29. Vértices, puntos, segmentos y triángulos • OpenGL usa vértices para renderizar puntos, segmentos y triángulos: • Punto: 1 vértice • Segmentos: 2 vértices • Triángulo: 3 vértices Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 30. Tipos • OpenGL es multiplataforma, así que define sus propios tipos mediante enums. • Todos empiezan con GL (se han partío el coco) • GLFloat, GLDouble, GLBoolean, etc... • GLclampf: GLFloat entre 0.0 1.0 • Ojo, ¡especifica siempre float! Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 31. Funciones Crea un color RGB Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 32. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 33. OpenGL ES en iOS Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 34. Limitaciones en iOS • No asignas los front y back buffers. Lo hace iOS por ti. • El frame buffer está conectado a una CALayer y comparten el bitmap. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 35. GLKViewController & GLKView • GLKView: tiene su rootlayer conectada a un frame buffer y cambia del front al back. • El controlador es el delegado de la vista y se encarga del dibuja y adaptar a la orientación. -(void) glkView:(GLKView *)view  drawInRect:(CGRect)rect Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 36. GLKBaseEffect • Proporciona un entorno por defecto • luces • texturas • “niebla” • Shaders por defecto • Abstrae las diferencias entre OpenGL 1.0 y 2.0 Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 37. Llegados a este punto... Suele pasar esto Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 38. Mejor será que vayamos a Xcode • Un proyecto de una sola vista (GLKView, GLKViewController). • Un GLKBaseEffect • 3 vértices (un triángulo) Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 39. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 40. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 41. Abstraer C • ATGLKContext • ATVertexArrayBuffer Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 42. Animaciones • Periódicamente cambiaremos la posición de los vértices y le pediremos a OpenGL ES que dibuje de nuevo. • GLKViewController nos facilita enormemente la labor. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 43. GLKViewController al rescate • preferedFramesPerSecond • framesPerSecond • -(void) update Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 44. Volvamos a Xcode • Añadimos nuestras dos clases. • Asignamos un preferedFramesPerSecond de 60. • Recalculamos los vértices y los dibujamos en update Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 45. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 46. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 47. Texturas • Forma sencilla de asignar un color a cada pixel. • Otro buffer de OpenGL con un mapa de bits. • Mapeamos puntos del buffer de vértices al de textura. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 48. Tamaño de la Textura • Lo menor posible. • En sistemas empotrados, suele estar limitado. • Si las dimensiones son potencias de 2, la GPU lo agradece. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 49. Texels {0,1} {1,1} T {1,0} {0,0} S Independientemente de las proporciones de la imagen, la textura tendra 1x1. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 50. Tipos de texturas • 1D: 1 pixel por n • 2D: n x m pixels (las más comunes) • 3D: una pila de 2D Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 51. Mapeados • Transformar un espacio vectorial en otro • Del espacio del frame buffer al de pantalla (viewport) • Del de vértices al de textura Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 52. Mapear Vértices a Texels • Cada vértice tendrá: • Posición:Vector 3D • Coordenadas de textura:Vector 2D Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 53. Mapear Vértices a Texels Vértice Textura Posición x,y,z T Color u v S Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 54. Mapear Vértices a Texels • Cada vértice coloreado se llama Fragment Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 55. Mapear Vértices a Texels • Una vez hecha la transformación, la GPU asigna color a cada pixel. • A este proceso, de pasar de datos geométricos a pixeles, se le llama rasterizar. • A cada pixel coloreado, se le llama fragment. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 56. Calma que ya falta poco... • One more thing! • Si vértices y texels coinciden, el mapeado es de uno a uno. • Pero... ¿y si no coinciden, qué coño hacemos?
  • 57. Funciones de Mapeado “Sampling Modes” • Dos funciones • Nearest • Interpolate • glTexParameteri al rescate Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 58. Funciones de Mapeado “Sampling Modes” • Nearest: Aspecto pixelado • Interpolated: Aspecto suave pero es costoso. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 59. MIP Mapping: La Trampa “El Golpe” consiste en crear varias versiones de la textura en distintas resoluciones. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 60. Cargar un textura en GLKBaseEffects Usamos GLKTextureLoader para darnos un GLKTextureInfo a partir de una CGImage. // Setup texture     UIImage *texture = [UIImage imageNamed:@"GrungePaint.jpg"];     NSError *err = nil;     GLKTextureInfo *textureInfo = [GLKTextureLoadertextureWithCGImage:[texture CGImage]                                                               options:nil                                                                 error:&err];     if (!textureInfo) {         NSLog(@"Error while loading texture: %@", [err localizedDescription]);     }          self.baseEffect.texture2d0.name = textureInfo.name;     self.baseEffect.texture2d0.target = textureInfo.target; Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 61. Volvamos a Xcode • Aplicaremos una textura al triángulo. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 62. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 63. Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 64. Aquí hay gato encerrado... • Lo normal no es tener 1 triángulo, sino miles o millones... • ¿Los escribo a mano? • Blender, obj & Cia Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 65. Mucho por ver Esto no es una foto... Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 66. Libros • The OpenGL SuperBible, 4th Edition • Learning OpenGL ES Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz
  • 67. Contacto • Fernando Rodríguez • @frr149 • www.agbo.biz Copyright © 2012 AGBO Business Architecture S.L. Todos los derechos reservados. www.agbo.biz