510 likes | 716 Views
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 ;
E N D
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 GraphicsLibrary; • Poderosa e sofisticada API (Application Programming Interface) para criação de aplicações gráficas 2D e 3D; • Não é uma linguagem! • Programa é baseado em OpenGL ou é uma aplicação OpenGL.
Características • Qualidade visual próxima de um raytracer; • Rapidez; • Portável; • Não possui funções para gerenciamento de janelas, interação com o usuário ou arquivos de entrada/saída.
Características • Não existe um formato de arquivo OpenGL para modelos ou ambientes virtuais; • Primitivas Gráficas; • Biblioteca GLU; • Iluminação, colorização, mapeamento de textura, transparência, animação...
Características • Simplicidade • É preciso apenas determinar os passos necessários para alcançar a aparência ou efeito desejado; • Mais de 250 comandos e funções. • OpenGL 3.2
História • Conjunto próprio de instruções; • Desafio de suportar vários hardwares; • Pouco espaço para pequenas companhias. • PHIGS (sigla de Programmer’sHierarchicalGraphics System); • Reconhecido pelas entidades ANSI e ISO. • IRIS GL - SiliconGraphics Inc. (SGI); • Estado da arte de uma API gráfica; • Mais fácil de usar. • Sun e a IBM ainda eram capazes de fabricar hardware adotando o padrão PHIGS; • Tornar a API Iris pública; • Criação do OpenGL. • Fabricantes de hardware gostariam de adicionar recursos próprios = estender o OpenGL; • Hardwares não seriam poderosos o suficiente para abraçar todo o padrão = extensões de software; • Direct3D – Microsoft; • Principal concorrente do OpenGL; • DirectX. 80’s 80’s 80’s Final dos 80’s 1995 1992 Meados dos 80’s • PHIGS (sigla de Programmer’sHierarchicalGraphics System) • Reconhecido pelas entidades ANSI e ISO • PHIGS (sigla de Programmer’sHierarchicalGraphics System) • Reconhecido pelas entidades ANSI e ISO
Tipos de Dados • Mapeados dos tipos de dados C comuns.
Nome das Funções • 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); • Exemplos : • - glColor3f() • - glLighfv()
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çãoEspecular • Simula a reflexão à maneira de um espelho(objetos altamente polidos) • Depende da posição do observador, objeto e fonte de luz
Atenuação • Parafontes 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âmera OpenGL trabalha com coordenadas homegêneas.
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
Bibliotecas • OpenGLUtility 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
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 • OpenGLUtility 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 • Podeusaraceleração 3D em hardware • Plataforma Windows • OpenGL • API aberta • Podeusaraceleração 3D em hardware • Maioria dos SO'smodernos.
OpenGL x Direct3DPortabilidade • Direct3D • Implementadoapenas p/ a família Windows • Incluindo XBOX e Sega Dreamcast • Hátentativas de portar p/ sistemas Unix • Requerengenhariareversa (processodifícil) • OpenGL • Implementações disponíveis em várias plataformas • Microsoft Windows, Mac OS X, Linux e iPhone. • SO'squepermitemaceleraçã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 windonsparacontrolar a placa de video. • Na versão Direct3D 10, incluida no Vista, permite o programadorimplementar • OpenGL • Utilizaduasmaneiras de controlar a placa de video: • o programadorimplementacomodesejachamar as operaçõespara o modo kernel. • o programadorchama o controlador do modo kernel
OpenGL x Direct3DLinhasdiferentes 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 mercadoprofissional • OpenGLsempredominou o Direct3D • Razõeshistóricas • Aplicaçõesgráficasoriginalmenteescritasem IRIS GL, e depoisportadasparaOpenGL. • Outrarazão: Marketing e Design • Direct3D nãofoi “marketeada” nemcriadaparaestepropósito • OpenGLé uma API 3D de propósitomaisgeral
OpenGL x Direct3DHistórico no mercado de jogos • No iníciocadaplacaaceleradoratinhaseu software exclusivo • Software de umanãorodavanaoutra • OpenGLe Direct3D emergiramcomocompetidores • Suportedaindústria a umabiblioteca multi-plataforma • 1990: Domínio do OpenGL • Facilidade de uso • 2000: Desenvolvedorespassaram a preferirDirect3D • Desde 1990 Direct3D sofreuváriasmelhorias
OpenGL x Direct3DUso no mercado de jogos • 2005: Chegadadasexta e sétimageração de consoles • De Sega Dreamcast a Playstation 3 • O mercado de consoles cresceumuito • Desenvolvimento multi-console passou a ser maisvisado • OpenGL -> suportadoportodososprincipais consoles (PSP, PS3 e Wii), excetoosda Microsoft(Xbox) • OpenGL passou a ser maisinteressante
Referências • http://www.inf.unisinos.br/~ltonietto/jed/pgr/007a_OpenGL.pdf • http://www.opengl.org • http://vinigodoy.wordpress.com/2007/12/26/entendendo-o-opengl/ • ftp://ftp.tecgraf.puc-rio.br/users/lfm/CIV2801Aula08OpenGL.pdf • http://www.cin.ufpe.br/~marcelow/Marcelow/programacao%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/Apostila.pdf