OpenGL
description
Transcript of OpenGL
OpenGL
André ChagasFilipe MeloJacinto ReisJonathan SoaresPaulo SousaRafael Santos
Roteiro
•Definição•Características•História•Aplicações•Pipeline•Arquitetura•Bibliotecas•OpenGL x Direct3D•Referências
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.
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.
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
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
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
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
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
Aplicações – Modelagem e Edição de Imagens
Aplicações – Visualizadores e Simuladores
Aplicações - Jogos
Pipeline
Pipeline
Transformações de Modelagem
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)
Iluminação
O modelo de iluminação do OpenGL considera a iluminação segundo quatro componentes: • Emissiva• Ambiente• Difusa• Especular
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.
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
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()
Transformação de câmeraTransformação de câmera
OpenGL trabalha com coordenadas homegêneas.
Projeção Perspectiva - Classificação
Projeção Perspectiva
Arquitetura
• Arquitetura de uma aplicação que usa 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
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
Características da Arquitetura• Estados do 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
•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
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
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()
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
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.
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
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)
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.
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
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
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.
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
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
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
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
Dúvidas