OpenGL

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

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 of OpenGL

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