1 / 51

OpenGL

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 ;

anoush
Télécharger la présentation

OpenGL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenGL André Chagas Filipe Melo Jacinto Reis Jonathan Soares Paulo Sousa Rafael Santos

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

  3. 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.

  4. 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.

  5. 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...

  6. 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

  7. 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

  8. Tipos de Dados • Mapeados dos tipos de dados C comuns.

  9. 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()

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

  11. Aplicações – Visualizadores e Simuladores

  12. Aplicações - Jogos

  13. Pipeline

  14. Pipeline

  15. Transformações de Modelagem

  16. 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)

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

  18. 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.

  19. IluminaçãoEspecular • Simula a reflexão à maneira de um espelho(objetos altamente polidos) • Depende da posição do observador, objeto e fonte de luz

  20. 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()

  21. Transformação de câmera OpenGL trabalha com coordenadas homegêneas.

  22. Projeção Ortogonal

  23. Projeção Perspectiva

  24. Projeção Perspectiva - Classificação

  25. Projeção Perspectiva

  26. Perspectiva x Ortogonal

  27. Rasterização

  28. Operações sobre fragmentos

  29. Arquitetura • Arquitetura de uma aplicação que usa OpenGL

  30. 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

  31. 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

  32. Características da Arquitetura • Estados do OpenGL

  33. 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

  34. 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

  35. 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

  36. 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()

  37. 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

  38. 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.

  39. 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

  40. 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)‏

  41. 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.

  42. 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

  43. 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

  44. 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.

  45. 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

  46. 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

  47. 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

  48. 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

More Related