opengl

51
OpenGL André Chagas Filipe Melo Jacinto Reis Jonathan Soar Paulo Sousa Rafael Santos

Upload: anoush

Post on 19-Jan-2016

48 views

Category:

Documents


0 download

DESCRIPTION

OpenGL. André Chagas Filipe Melo Jacinto Reis Jonathan Soares Paulo Sousa Rafael Santos. Roteiro. Definição Características História Aplicações Pipeline Arquitetura Bibliotecas OpenGL x Direct3D Referências. O que é OpenGL?. Open Graphics Library ; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: OpenGL

OpenGL

André ChagasFilipe MeloJacinto ReisJonathan SoaresPaulo SousaRafael Santos

Page 2: OpenGL

Roteiro

•Definição•Características•História•Aplicações•Pipeline•Arquitetura•Bibliotecas•OpenGL x Direct3D•Referências

Page 3: OpenGL

O que é OpenGL?

o Open Graphics Library;

o Poderosa e sofisticada API (Application Programming Interface) para criação de aplicações gráficas 2D e 3D;

o Não é uma linguagem!

o Programa é baseado em OpenGL ou é uma aplicação OpenGL.

Page 4: OpenGL

Características

o Qualidade visual próxima de um ray tracer;

o Rapidez;

o Portável;

o Não possui funções para gerenciamento de janelas, interação com o usuário ou arquivos de entrada/saída.

Page 5: OpenGL

o Não existe um formato de arquivo OpenGL para modelos ou ambientes virtuais;

o Primitivas Gráficas;

o Biblioteca GLU;

o Iluminação, colorização, mapeamento de textura, transparência, animação...

Características

Page 6: OpenGL

Características

o Simplicidade▫É preciso apenas determinar os passos

necessários para alcançar a aparência ou efeito desejado;

o Mais de 250 comandos e funções.

o OpenGL 3.2

Page 7: OpenGL

80’s

Meados dos 80’s

Final dos 80’s 199

2

1995

o Conjunto próprio de instruções;

o Desafio de suportar vários hardwares;

o Pouco espaço para pequenas companhias.

o PHIGS (sigla de Programmer’s Hierarchical Graphics System);

o Reconhecido pelas entidades ANSI e ISO.

o IRIS GL - Silicon Graphics Inc. (SGI);

o Estado da arte de uma API gráfica;

o Mais fácil de usar.

o Sun e a IBM ainda eram capazes de fabricar hardware

adotando o padrão PHIGS;

o Tornar a API Iris pública;

o Criação do OpenGL.

o Fabricantes de hardware gostariam de adicionar recursos próprios = estender o OpenGL;

o Hardwares não seriam poderosos o suficiente para

abraçar todo o padrão = extensões de software;

o Direct3D – Microsoft;

oPrincipal concorrente do OpenGL;

o DirectX.

História

Page 8: OpenGL

o Mapeados dos tipos de dados C comuns.

Tipo de dado OpenGL

Representação interna

Tipo de dado C equivalente 

Sufixo

GLbyte 8-bit integer signed char b

GLshort 16-bit integer short s

GLint, GLsizei 32-bit integer int ou long i

GLfloat, GLclampf32-bit floating-point

float f

GLdouble, GLclampd64-bit floating-point

double d

GLubyte, GLboolean8-bit unsigned integer

unsigned char ub

GLushort16-bit unsigned integer

unsigned short us

GLuint, GLenum, GLbitfield

32-bit unsigned integer

unsigned long ou unsigned int

ui

Tipos de Dados

Page 9: OpenGL

o Formato padrão:gl {nome da função}{número de variáveis}{tipo de variáveis}{forma vetorial}(arg 1, arg 2 ..., arg n);

o Exemplos :- glColor3f()- glLighfv()

Nome das Funções

Page 10: OpenGL

Aplicações – Modelagem e Edição de Imagens

Page 11: OpenGL

Aplicações – Visualizadores e Simuladores

Page 12: OpenGL

Aplicações - Jogos

Page 13: OpenGL
Page 14: OpenGL

Pipeline

Page 15: OpenGL

Pipeline

Page 16: OpenGL

Transformações de Modelagem

Page 17: OpenGL

Coloração

OpenGL define dois modelos de coloração (controlam como as cores são atribuidas aos pixels).

• Coloração constante: usa uma cor constante em todo o polígono

      glShadeModel(GL_FLAT) • Coloração de Gouraud: interpola as cores entre os

vértices (coloração por defeito)     glShadeModel(GL_SMOOTH)

Page 18: OpenGL
Page 19: OpenGL

Iluminação

O modelo de iluminação  do OpenGL considera a iluminação segundo quatro componentes: • Emissiva• Ambiente• Difusa• Especular

Page 20: OpenGL

Iluminação Difusa

• Iluminação recebida e que é refletida uniformente em todas as direções;

• Características de materiais baços ou foscos;• Reflexão lambertiana.

Page 21: OpenGL

Iluminação Especular

• Simula a reflexão à maneira de um espelho(objetos altamente polidos)

• Depende da posição do observador, objeto e fonte de luz

Page 22: OpenGL

Atenuação

• Para fontes de luz posicionais, é possível definir um fator de atenuação que leva em conta a distancia entre a fonte de luz e o objeto

• Coeficientes são definidos pela função glLight()

Page 23: OpenGL

Transformação de câmeraTransformação de câmera

OpenGL trabalha com coordenadas homegêneas.

Page 24: OpenGL
Page 25: OpenGL
Page 26: OpenGL

Projeção Perspectiva - Classificação

Page 27: OpenGL

Projeção Perspectiva

Page 28: OpenGL
Page 29: OpenGL
Page 30: OpenGL
Page 31: OpenGL

Arquitetura

• Arquitetura de uma aplicação que usa OpenGL

Page 32: OpenGL

Características da Arquitetura

•Conjunto de instruções▫Permite acesso a recursos do hardware de

vídeo

•Filosofia Cliente/Servidor▫Cliente : Geração dos comandos▫Servidor : Processamento(render) dos

dados▫Protocolo padronizado

Page 33: OpenGL

Características da Arquitetura

•Comandos são agrupados e enviados▫Não há garantia que os comandos serão

imediatamente executados

•Máquina de estados▫Mantém uma série de variáveis de estado▫Permite ativar e desativar aspectos▫Pode resultar em estados inesperados

Page 34: OpenGL

Características da Arquitetura• Estados do OpenGL

Page 35: OpenGL

Bibliotecas

•Por que utilizá-las?▫OpenGL possui comandos muito primitivos▫Maior nível de abstração▫Necessidade de funções para criação de

janelas▫E, funções para gerenciamento de eventos

•Bibliotecas mais utilizadas▫GLU ▫GLUT

Page 36: OpenGL

•OpenGL Utility Library (GLU)▫Geralmente distribuída com o pacote

básico do OpenGL▫Todas as suas funções possuem o prefixo

glu Ex.: gluPerspective()

▫Possue funções que encapsulam comandos OpenGL de mais baixo nível

Bibliotecas

Page 37: OpenGL

Biblioteca GLU

•Principais funcionalidades▫Definição de matrizes para projeção e

orientação da visualização▫Especificação da posição da câmera virtual ▫Manipulação de curvas do tipo NURBS▫Desenho de superfícies quadráticas▫Interpretação dos códigos de erros do

OpenGL

Page 38: OpenGL

Bibliotecas

•OpenGL Utility Toolkit (GLUT)▫É um toolkit independente de plataforma▫Foi criado por Mark Kilgard▫Permite criação e controle de janelas▫Permite tratamento de eventos do usuário▫Programas são portáteis▫Todas as suas funções possuem o prefixo

glut Ex.: glutMainLoop()

Page 39: OpenGL

Biblioteca GLUT

•Outras características▫Possui rotinas para especificação de

objetos tridimensionais Ex.: Cubo, Esfera e Bule

▫Simplicidade no aprendizado

•Problema▫Limitada com relação a outras APIs como

Fox e wxWidget

Page 40: OpenGL

OpenGL x Direct3D

• Direct3D é parte da DirectX

▫API proprietária

▫Pode usar aceleração 3D em hardware

▫Plataforma Windows

• OpenGL

▫API aberta

▫Pode usar aceleração 3D em hardware

▫Maioria dos SO's modernos.

Page 41: OpenGL

OpenGL x Direct3DPortabilidade• Direct3D

▫ Implementado apenas p/ a família Windows

Incluindo XBOX e Sega Dreamcast

▫ Há tentativas de portar p/ sistemas Unix

Requer engenharia reversa (processo difícil)

• OpenGL

▫ Implementações disponíveis em várias plataformas

Microsoft Windows, Mac OS X, Linux e iPhone.

▫ SO's que permitem aceleração 3D: API primária

Page 42: OpenGL

Direct3DFacilidade de Uso

•No início Direct3D frustrava muitos programadores.

▫John Carmack pediu à MS para bandoná-lo em favor do OGL (1997)

•Após muita evolução, a crítica mudou

▫John Carmack diz ser uma das melhores APIs com que já trabalhou (2007)

Page 43: OpenGL

OpenGL Facilidade de Uso

•Não teve o problema de aceitação que o direct3D;

•Manteve a facilidade de realizar mudanças com chamadas de função única;

•Baseada na linguagem de programação C não teve dependência com nenhum recurso de linguagem particular.

Page 44: OpenGL

OpenGL x Direct3DPerformance • Direct3D

▫ Utilizar o controlador de modo kernel do SO windons para controlar a placa de video.

Na versão Direct3D 10, incluida no Vista, permite o programador implementar

• OpenGL

▫ Utiliza duas maneiras de controlar a placa de video:

o programador implementa como deseja chamar as operações para o modo kernel.

o programador chama o controlador do modo kernel

Page 45: OpenGL

OpenGL x Direct3DLinhas diferentes de pensamento

•Direct3D é projetado para ser uma interface de hardware 3D▫Direct3D espera que a aplicação gerencie

os recursos de hardware

•OpenGL é para ser um sistema de renderização em 3D que pode ser acelerado por hardware.▫OpenGL faz o driver gerenciar os recursos

de hardware

Page 46: OpenGL

OpenGL x Direct3DExtensão e Flexibilidade

•OpenGL (código aberto) inclui um mecanismo em que qualquer programador pode anunciar suas próprias extensões à API.

•Direct3D (código fechado) é especificado por um fornecedor Microsoft, apenas, levando a uma API mais consistente, mas negar o acesso a recursos específicos do fornecedor.

Page 47: OpenGL

OpenGL x Direct3DUso no mercado profissional

• OpenGL sempre dominou o Direct3D

• Razões históricas

▫Aplicações gráficas originalmente escritas em IRIS GL, e depois portadas para OpenGL.

• Outra razão: Marketing e Design

▫Direct3D não foi “marketeada” nem criada para este propósito

▫OpenGL é uma API 3D de propósito mais geral

Page 48: OpenGL

OpenGL x Direct3DHistórico no mercado de jogos

• No início cada placa aceleradora tinha seu software exclusivo

▫ Software de uma não rodava na outra

• OpenGL e Direct3D emergiram como competidores

▫ Suporte da indústria a uma biblioteca multi-plataforma

• 1990: Domínio do OpenGL

▫ Facilidade de uso

• 2000: Desenvolvedores passaram a preferir Direct3D

▫ Desde 1990 Direct3D sofreu várias melhorias

Page 49: OpenGL

OpenGL x Direct3DUso no mercado de jogos

• 2005: Chegada da sexta e sétima geração de consoles

▫De Sega Dreamcast a Playstation 3

▫O mercado de consoles cresceu muito

▫Desenvolvimento multi-console passou a ser mais visado

▫OpenGL -> suportado por todos os principais consoles (PSP, PS3 e Wii), exceto os da Microsoft(Xbox)

▫OpenGL passou a ser mais interessante

Page 50: OpenGL

Referências• http://www.inf.unisinos.br/~ltonietto/jed/pgr/007

a_OpenGL.pdf• http://www.opengl.org• http://vinigodoy.wordpress.com/2007/12/26/ente

ndendo-o-opengl/• ftp://ftp.tecgraf.puc-rio.br/users/lfm/CIV2801Aul

a08OpenGL.pdf• http://www.cin.ufpe.br/~marcelow/Marcelow/pro

gramacao%20cg_files/review-pipeline.pdf• http://pt.wikipedia.org/wiki/OpenGL• http://www.lmc.ep.usp.br/people/gguello/Opengl.

html• http://www.mat.ufmg.br/padmod/Downloads/Apo

stila.pdf

Page 51: OpenGL

Dúvidas