Slide 1

Slide 1 text

GLKit Introdução ao OpenGL ES 2.0 e GLKit Nilson Souto - xissburg

Slide 2

Slide 2 text

Conteúdo O que é OpenGL Motivação - Para que serve? GLKit - Introdução Exemplo prático Conclusão Dúvidas?

Slide 3

Slide 3 text

O que é OpenGL Open Graphics Library OpenGL é uma interface de software para o hardware gráfico [The Redbook] Possui mais de 200 funções que permitem controlar o hardware gráfico OpenGL ES: subconjunto do OpenGL para dispositivos móveis

Slide 4

Slide 4 text

Motivação Onde e quando podemos utilizar o OpenGL? Jogos e aplicações de visualização tridimensional Processamento de imagens acelerado em GPU Efeitos e transições impossíveis/inviáveis de se fazer com UIKit, Core Graphics, Core Animation...

Slide 5

Slide 5 text

Motivação Fabien Sanglard’s dEngine

Slide 6

Slide 6 text

Motivação Infinity Blade II - Epic Games, Chair Entertainment

Slide 7

Slide 7 text

Motivação Infinity Blade II - Epic Games, Chair Entertainment

Slide 8

Slide 8 text

Motivação XBPageCurl

Slide 9

Slide 9 text

GLKit Framework disponível a partir do iOS 5.0 Facilita no desenvolvimento de apps que fazem uso do OpenGL Fornece classes utilitárias para carregar texturas, aplicar efeitos básicos e realizar operações entre vetores, matrizes e quaternions

Slide 10

Slide 10 text

GLKit - Classes GLKView: subclasse de UIView onde o OpenGL apresenta seu framebuffer principal GLKViewController: subclasse de UIViewController que implementa o loop de renderização GLKTextureLoader: cria texturas diretamente de imagens Structs: GLKVector2/3/4, GLKMatrix3/4, GLQuaternion

Slide 11

Slide 11 text

GLKit - OpenGL ES 2.0 Um elemento fundamental do OpenGL é o triângulo O triângulo é uma forma geométrica composta por 3 vértices e 3 arestas/lados que são segmentos de reta [Zeidler, Eberhard 2004 - Oxford User's Guide to Mathematics]

Slide 12

Slide 12 text

GLKit - OpenGL ES 2.0 Triângulo

Slide 13

Slide 13 text

GLKit - OpenGL ES 2.0 No OpenGL representamos triângulos com arrays de vértices e arrays de índices Cada vértice possui posição, cor, coordenadas de textura, vetor normal, etc O array de índices possui inteiros que fazem referência aos vértices do array de vértices Os índices são dispostos em um array onde cada 3 índices em sequencia define um triângulo

Slide 14

Slide 14 text

GLKit - OpenGL ES 2.0 Vértices 0 pos = (x0, y0, z0) cor = #ff0000 1 pos = (x1, y1, z1) cor = #00ff00 2 pos = (x2, y2, z2) cor = #0000ff 3 pos = (x3, y3, z3) cor = #0000ff

Slide 15

Slide 15 text

GLKit - OpenGL ES 2.0 Índices 0 0 1 1 2 2 3 0 4 3 5 1

Slide 16

Slide 16 text

GLKit - OpenGL ES 2.0 Antes de desenhar triângulos no OpenGL ES 2.0 temos que fornecer um vertex shader e um fragment shader Vertex shader é um programa que é executado na GPU para cada vértice Fragment shader é um programa que é executado na GPU para cada fragmento Ambos são escritos em GLSL (GL Shading Language)

Slide 17

Slide 17 text

GLKit - Exemplo http:/ /bitbucket.org/xissburg/glkit-sample

Slide 18

Slide 18 text

Conclusão O GLKit de fato facilita a programação de apps nos livrando de escrever código boilerplate O GLKMath traz um um bom conjunto de classes de álgebra linear tirando a necessidade de utilizar alguma outra library Infelizmente só podemos utilizá-lo no iOS 5

Slide 19

Slide 19 text

Referências GLKit Framework Reference - Apple Inc. 2011 Ray Wenderlich - http:/ /raywenderlich.com The OpenGL Programming Guide - The Redbook

Slide 20

Slide 20 text

Dúvidas? ?