A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

OpenGL André Chagas Filipe Melo Jacinto Reis Jonathan Soares

Apresentações semelhantes


Apresentação em tema: "OpenGL André Chagas Filipe Melo Jacinto Reis Jonathan Soares"— Transcrição da apresentação:

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 Graphics Library;
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. OpenGL é definida como "um programa de interface para hardware gráfico". Na verdade, OpenGL é uma biblioteca de rotinas gráficas e de modelagem, bi (2D) e tridimensional (3D), extremamente portável e rápida. - Normalmente se diz que um programa é baseado em OpenGL ou é uma aplicação OpenGL, o que significa que ele é escrito em alguma linguagem de programação que faz chamadas a uma ou mais bibliotecas OpenGL.

4 Características Qualidade visual próxima de um ray tracer; Rapidez;
Portável; Não possui funções para gerenciamento de janelas, interação com o usuário ou arquivos de entrada/saída. Usando OpenGL é possível criar gráficos 3D com uma qualidade visual próxima de um ray tracer; A maior vantagem na sua utilização é a rapidez, uma vez que usa algoritmos cuidadosamente desenvolvidos e otimizados pela Silicon Graphics, Inc., líder mundial em Computação Gráfica e Animação. Cada ambiente, como por exemplo o Microsoft Windows, possui suas próprias funções para estes propósitos.

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... Não existe um formato de arquivo OpenGL para modelos ou ambientes virtuais. OpenGL fornece um pequeno conjunto de primitivas gráficas para construção de modelos, tais como pontos, linhas e polígonos. A biblioteca GLU (que faz parte da implementação OpenGL) é que fornece várias funções para modelagem, tais como superfícies quádricas, e curvas e superfícies NURBS (Non Uniform Rational B-Splines) Além do desenho de primitivas gráficas, tais como linhas e polígonos, OpenGL dá suporte a iluminação, colorização, mapeamento de textura, transparência, animação, entre muitos outros efeitos especiais.

6 Características Simplicidade Mais de 250 comandos e funções.
É 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 - Ao invés de descrever a cena e como ela deve parecer, quando se está utilizando OpenGL é preciso apenas determinar os passos necessários para alcançar a aparência ou efeito desejado. Estes passos envolvem chamadas a esta API portável que inclui aproximadamente 250 comandos e funções (200 comandos do core OpenGL e 50 da GLU - OpenGL Utility Library).

7 80’s 80’s História Direct3D – Microsoft;
IRIS GL - Silicon Graphics Inc. (SGI); Estado da arte de uma API gráfica; Mais fácil de usar. PHIGS (sigla de Programmer’s Hierarchical Graphics System); Reconhecido pelas entidades ANSI e ISO. 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. Conjunto próprio de instruções; Desafio de suportar vários hardwares; Pouco espaço para pequenas companhias. 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. 80’s 80’s Final dos 80’s 1995 Meados dos 80’s 1992 Na década de 80, cada fabricante de hardware tinha seu próprio conjunto de instruções para desenho de gráficos 2D e 3D. Construir aplicações com essas tecnologias, que suportassem vários hardwares era um verdadeiro desafio. O esforço era constantemente duplicado e havia pouco espaço para companhias menores e sem capital entrarem nesse mercado. Em meados dos anos 80 um padrão surgiu na indústria. Chamado PHIGS (sigla de Programmer’s Hierarchical Graphics System), começou a ser adotado por grandes fabricantes da época. Entretanto, embora tenha sido reconhecido por entidades como a ANSI e a ISO, o padrão começou a ser considerado complicado e desatualizado. No final dos anos 80, a Silicon Graphics Inc. (SGI), criou um padrão chamado IRIS GL, que não só começou a chamar atenção da indústria, como também foi considerado o estado da arte de uma API gráfica. Consideravelmente mais fácil de usar, a API começou a tornar-se um padrão de facto na indústria. Isso levou a SGI a tomar uma decisão para que a adoção de sua API fosse impulsionada: torna-la um padrão público, para que todos os fabricantes de placas de vídeo pudessem adota-lo. - A SGI considerou que a API Iris continha muito código proprietário e portanto não poderia ser aberta. Ela também lidava com questões não tão relacionadas ao desenho 2D e 3D, como gerenciamento de janelas, teclado e mouse. Por outro lado, não era do interesse da Silicon Graphics perder clientes, o que os levou a buscar uma solução ainda compatível. Como resultado disso, o padrão OpenGL foi criado. Os projetistas do OpenGL sabiam de duas coisas. A primeira é que fabricantes de hardware gostariam de adicionar recursos próprios, sem que tivessem que esperar para esses recursos estarem oficialmente aceitos no padrão. Para resolver esse problema, eles incluíram uma maneira de estender o OpenGL. Em segundo lugar, os projetistas também sabiam que muitos hardwares não seriam poderosos o suficiente para abraçar todo o padrão. Por isso, também incluíram extensões de software, que permitiam emular essas funcionalidades. Isso resolvia um problema sério que ocorria com a Iris: O da aplicação simplesmente não rodar pela falta de um ou outro recurso. Em 1995 a Microsoft lançou o Direct3D, que se tornou um dos principais concorrentes do OpenGL. O Direct3D vem integrado juntamente ao DirectX, que contém soluções também para som, música e rede. PHIGS (sigla de Programmer’s Hierarchical Graphics System) Reconhecido pelas entidades ANSI e ISO PHIGS (sigla de Programmer’s Hierarchical Graphics System) Reconhecido pelas entidades ANSI e ISO

8 Representação interna Tipo de dado C equivalente
Tipos de Dados 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, GLclampf 32-bit floating-point float f GLdouble, GLclampd 64-bit floating-point double d GLubyte, GLboolean 8-bit unsigned integer unsigned char ub GLushort 16-bit unsigned integer unsigned short us GLuint, GLenum, GLbitfield 32-bit unsigned integer unsigned long ou unsigned int ui - Para tornar o código portável, foram definidos tipos de dados próprios para OpenGL. Estes tipos de dados são mapeados dos tipos de dados C comuns, que também podem ser utilizados.

9 Nome das Funções Formato padrão: Exemplos :
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() - Todos os nomes das funções OpenGL seguem uma convenção que indica de qual biblioteca a função faz parte e, freqüentemente, quantos e que tipos de argumentos a função tem.

10 Aplicações – Modelagem e Edição de Imagens
1 - 3Ds Max (Modelagem) 2 - Maya (Modelagem) 3 - Photoshop CS4 (Edição de imagem)

11 Aplicações – Visualizadores e Simuladores
1 – Google Earth (Visualização) 2 – FlightGear (Simulação)

12 Aplicações - Jogos 1 – Call of Duty 2 – Quake 4 3 – Warcraft 3

13

14 Pipeline Como uma aplicação faz chamadas às funções API OpenGL, os comandos são colocados em um buffer de comandos. Este buffer é preenchido com comandos, vértices, dados de textura, etc. Quando este buffer é "esvaziado", os comandos e dados são passados para o próximo estágio. Após a etapa de aplicação das transformações geométricas e da iluminação, é feita a rasterização, isto é, é gerada a imagem a partir dos dados geométricos, de cor e textura. A imagem final, então, é colocada no frame buffer, que é a memória do dispositivo gráfico.

15 Pipeline A palavra pipeline é usada para descrever um processo que pode ter dois ou mais passos distintos. Maior parte das implementações-> Ordem a ser executadas

16 Transformações de Modelagem
Objetos definidos no seu proprio sistema de coordenadas Transformaçoes de modelagem orientam os objetos de acordo com um sistema de coordenadas comum, o sistema Universo. Para isso são aplicadas transformações de mudança de escala, rotação e translação no objeto, para trazer o objeto da origem do sistema universal para a posição desejada do objeto.

17 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)

18

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

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

21 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

22 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()

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

24 Projeção Ortogonal O tipo mais simples de projeção é a projeção ortogonal ou paralela, onde a imagem de um ponto é definida como a projeção normal deste ponto no plano de projeção. A projeção ortogonal é uma representação bidimensional de um objeto tridimensional, na engenharia no processo de fabricação é necessária uma descrição completa e clara da forma e do tamanho de um objeto projetado para ser concebido. A projeção ortográfica é obtida pela simples eliminação do componente "z".

25 Projeção Perspectiva Projeção é transformar objetos de 3 dimensão em objetos de 2 dimensão. A projeção em perspectiva considera a profundidade como elemento relevante na sua formação e por isso apresenta um resultado mais familiar ao observador humano. O sistema de coordenadas mais favorável às projeções em perspectiva adotam um "ponto de fuga" no centro da tela, isto é, todas as linhas do desenho apontam para este ponto de fuga, criando uma "sensação" de profundidade ao observador humano.

26 Projeção Perspectiva - Classificação

27 Projeção Perspectiva A projeção em perspectiva é feita através de cálculos simples de "semelhança de triângulos". Note que na projeção ilustrada pela Figura 6 o parâmetro Zspace foi incluído no cálculo da projeção. Assim quanto mais um objeto se distancia do plano de projeção, menor o valor resultante da divisão, assim sendo os pontos localizados a uma grande distância do plano de projeção serão levados ao centro do sistema de coordenadas.

28 Perspectiva x Ortogonal
A perspectiva apresenta mais realismo aos objetos. A ortogonal possui cálculos mais simples já que elimina a coordenada z.

29 Rasterização A rasterização é o processo onde os dados vetoriais serão convertidos em uma imagem de pixels para a exibição na tela. O bloco de rasterização calcula quais pixels são cobertos por cada primitivo e usando o o bloco z-cull, descarta os pixels que estão escondidos por pixeis com um menor valor de profundidade. Assim, temos o fragmento, um candidato a pixel, ou seja, um possível pixel a ser exibido no frame final Rasterização é atualmente a técnica mais popular para a produção em tempo real de gráficos 3D. Aplicações em real-time (tempo real) precissam responder de imediato aos usuários e, em geral, necessidade de produzir taxas de pelo menos 30 frames por segundo

30 Operações sobre fragmentos
Depois dos fragmentos serem gerados pelo processo de rasterização, uma série de operações podem ser realizadas sobre eles, sendo que a mais importante provavelmente é o mapeamento de textura. Que é aplicar uma imagem 2D em poligonos 3D.

31 Arquitetura Arquitetura de uma aplicação que usa OpenGL
->Uma aplicação desenvolvida em OpenGL pode acessar a API OpenGL de forma direta ou indireta -> Pode haver uma API abstrata sobre o OpenGL que pode tornar a programação em mais alto nível. como exemplos o Java3D, GLUT, -> A aplicação do usuário não pode conversar diretamente com o hardware da placa gráfica. ->Caso um computador não tenha uma placa gráfica, ou tiver uma placa gráfica antiga que não oferece muitos recursos, cabe ao driver OpenGL realizar as funcionalidades não oferecidas. Podendo comprometer o desempenho da aplicação como um todo.

32 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 Conjunto de instruções Tópico 1: OpenGL possui centenas de funções que fornecem acesso a praticamente todos os recursos do hardware de vídeo. Filosofia cliente/servidor Tópico 1: o cliente é responsável pela geração dos comandos OpenGL e visualização dos resultados Tópico 2: enquanto é que o servidor é responsável por receber e processar (render) os dados e comandos de pintura. Tópico 3: O protocolo padronizado define o formato da transmissão desses comandos.

33 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 Comandos são agrupados e enviados Tópico 1: Os Comandos não são imediatamente jogados para o HW, eles são agrupados para serem enviados mais tarde ,otimizando a rede ME É possível colocá-la em vários estados, ou modos, que não são alterados, a menos que uma função seja chamada para isto. Tópico 1: Cor, Estilo (ou padrão) de uma linha, Posições e características das luzes, Propriedades do material dos objetos, cada variável de estado possui um valor default que pode ser alterado. Tópico 2: Tais como a cor atual, se transparência será usada, se cálculos de iluminação devem ser feitos, se haverá ou não o efeito de neblina. vantagens : redução no número de parâmetros necessários para definição dos objetos e com isso diminuição do fluxo de informações que precisam transitar na rede, caso seja cliente/servidor Tópico 3: A troca frequente de estados afeta a performance.

34 Características da Arquitetura
Estados do OpenGL Exemplos de estados da máquina de estados do opengl.

35 Bibliotecas Por que utilizá-las? Bibliotecas mais utilizadas
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 Tópico 1: Tal que toda e qualquer rotina de alto nível para elaboração de desenhos deve ser implementada. Tópico 2: Necessidade de maior abstração, facilitando assim o desenvolvimento de aplicações gráficas Tópico 3: Pois opengl não tem comandos para criação e gerenciamento de janelas, importante p/ mante-la sempre atualizadas Tópico 4: Para lidar com as entradas de eventos do usuário como mouse e teclado

36 Bibliotecas 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 GLU possue um conjunto de funções utilitárias para tarefas comuns e complexas Tópico 2: Padronização de nomes em a qual todas tem o prefixo glu Tópico 3: Consiste em funções que utilizam os recurso de baixo nível da biblioteca OpenGL para prover rotinas de de alto nível.

37 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 Tópico 1: Os quais permitem o mapeamento de coordenadas entre o espaço de tela e o do objeto Tópico 2: Possue funções p/ a especificação da posição da câmera de forma mais amigável que as do opengl. Tópico 3: Possue funções p/ gerar e representar curvas e superficies do tipo NURBS Tópico 4: Possue funções p/ desenho de superfícies quadricas, superficies e imagens 3D.

38 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() GLUT foi criada para facilitar o desenvolvimento de interfaces Tópico 1: Fazendo com que os aplicativos sejam multiplataformas, sistema de janelas independente de sistema. Tópico 3: Pelo fato de OpenGL ser independente do sistema de janelas Tópico 4: Como por exemplos eventos dos teclado e mouse Tópico 5: Podendo ser compilados e executados em diferentes ambientes Tópico 6: Padronização de nomes em a qual todas tem o prefixo glut

39 Biblioteca GLUT Outras características Problema
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 Tópico 2: Torna o aprendizado de OpenGL mais simples, permite criar aplicações básicas em GLUT demandam apenas poucas linhas de código. Problema Tópico 1: Muitas tarefas podem se tornar difíceis e necessitarem de patches e extensões Outros problemas: não é de dominio público mas é free

40 OpenGL x Direct3D Direct3D é parte da DirectX OpenGL API proprietária
Pode usar aceleração 3D em hardware Plataforma Windows OpenGL API aberta Maioria dos SO's modernos. Direct3D é uma API proprietária, usa aceleração de hardware, se estiver disponível na placa gráfica. Foi projetado por Microsoft Corporation para uso na plataforma Windows. OpenGL é um padrão aberto, usa aceleração de hardware, se estiver disponível na placa gráfica e está disponível na maioria dos sistemas operacionais modernos.

41 OpenGL x Direct3D Portabilidade
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 Direct3D é implementada apenas para a família Microsoft de sistemas operacionais Windows, incluindo versões embutido utilizado na família Xbox dos consoles de video game e Sega Dreamcast Há tentativas de portar p/ sistemas Unix atravez do projeto wine Mas a portabilidade é dificultada devido à interdependência de DirectX em muitos outros componentes do Windows, e porque a natureza proprietária Direct3D requer engenharia reversa (processo difícil). A engenharia reversa descobrir os princípios tecnológicos de um sistema, através de análise de sua operação. além de analisar o seu funcionamento em detalhe, muitas vezes utiliza algum software para a manutenção, ou tentar fazer um novo programa que faz a mesma coisa sem nada a cópia do original. OpenGL OpenGL tem implementações disponíveis em várias plataformas, incluindo Microsoft Windows, UNIX baseado em sistemas como o Mac OS X, Linux, OpenSolaris e do PlayStation 3 game console. Variantes do OpenGL executados no Nintendo GameCube, Wii, Nintendo DS [1] e PlayStation Portable. OpenGL foi escolhida como a biblioteca de gráficos primário para o iPhone, o Android (plataforma de dispositivo móvel) e Symbian OS. Com exceção do Windows e Xbox, todos os sistemas operacionais que permitem a aceleração por hardware utilizar gráficos 3D OpenGL. Utilizando-o como a API primaria. Curiozidade Driver da Microsoft, OpenGL, junto com as versões do Windows antes do Windows Vista, não fornece a aceleração de hardware ou de apoio directo aos ramais. Estas versões do Windows, assim, exigir que os usuários instalem drivers desenvolvido por fabricantes de GPU para OpenGL suporte de hardware.

42 Direct3D Facilidade 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)‏ A primeira versão do Direct3D suscitou críticas generalizadas, porque mesmo as operações simples, tais como mudanças de estado, exigiu a criação e a apresentação de objetos chamados "execute buffers". Em contraste, na maior parte do estado do OpenGL mudanças podem ser realizadas com chamadas de função única. O modelo Direct3D frustrou muitos programadores. Um dos importante programadores John Carmack que trabalhou nos jogos: Wolfenstein 3D, Doom e Quake pediu para a Microsoft abandonar o Microsoft Direct3D em favor do OpenGL. Apesar da controvérsia, a Microsoft continuou a evoluir a API. Alguns críticos do ex-Direct3D reconhecer que agora Direct3D é pelo menos comparável ao OpenGL em termos de capacidades e facilidade de uso. John Carmack diz ser uma das melhores APIs com que já trabalhou (2007)‏

43 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. Em contraste, na maior parte do estado do OpenGL mudanças podem ser realizadas com chamadas de função única. OpenGL é uma especificação baseada na linguagem de programação C. Ele é construído em torno do conceito de uma máquina de estado, embora as versões mais recentes do OpenGL que o transformou em muito mais de um objeto no sistema. Como uma API, OpenGL não depende de nenhum recurso de linguagem particular, e podem ser feitas pode ser chamado a partir de quase qualquer linguagem de programação com as ligações adequadas. Such bindings exist for VB, Ada, Pascal, Delphi , Python, Lua , Perl, Haskell, Java and C#, just to name a few. Essas ligações existem para VB, Ada, Pascal, Delphi, Python, Lua, Perl, Haskell, Java e C #, só para citar alguns.

44 OpenGL x Direct3D Performance
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 Direct3D utiliza um controlador IHV(controlador de modo kernel do SO) para comandar os drives. OpenGL utiliza um controlador IHV de duas maneiras uma o programador implementa na API OpenGL como será realizado as chamdas em modo kernel e outra pelo controlador do modo kernel chamada pelo usuário. A razão pela qual este é um problema porque é chamar as operações em modo kernel a partir do modo de utilizador necessita realizar uma chamada de sistema (isto é, tornando a troca de CPU para o modo kernel). Esta é uma operação lenta, levando a ordem de microssegundos para ser concluída. Como tal, uma otimização de desempenho seria a de minimizar o número de vezes que esta operação de troca deve ser realizada.Isso só seria possível se o programador pudesse controlar as chamdas com frome a sua necessideda

45 OpenGL x Direct3D Linhas 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 Em geral, o Direct3D é projetado para ser uma interface de hardware 3D. O conjunto de recursos Direct3D é derivado do conjunto de recursos de hardware que oferece OpenGL, por outro lado, foi concebido para ser um sistema de renderização em 3D que pode ser acelerado por hardware. Direct3D espera que a aplicação para gerir os recursos de hardware; OpenGL faz a execução fazê-lo Esta troca de OpenGL diminui a dificuldade em desenvolver para o API, enquanto, ao mesmo tempo aumentar a complexidade da criação de uma aplicação (ou driver) que funciona bem.

46 OpenGL x Direct3D Extensã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. O mecanismo de extensão do OpenGL é provavelmente a diferença mais fortemente disputado entre as duas APIs. OpenGL inclui um mecanismo em que qualquer condutor pode anunciar suas próprias extensões à API, introduzindo novas funcionalidades tais como modos de mistura, novas formas de transferência de dados para a GPU, ou textura diferentes parâmetros de embrulho. Isso permite que a nova funcionalidade para ser exposto rapidamente, mas pode levar a confusão se diferentes fornecedores implementar extensões semelhantes com APIs diferentes. Por outro lado, o Direct3D é especificado por um fornecedor (Microsoft), apenas, levando a uma API mais consistente, mas negar o acesso a recursos específicos do fornecedor. NVIDIA 's tecnologia UltraShadow, [9], por exemplo, não está disponível no estoque Direct3D API no momento da escrita [carece de fontes?]. Deve-se notar que as extensões Direct3D não suporte formato de textura (através FourCC). Estes eram pouco conhecidos e raramente usada, mas são agora usados para DXT compressão de textura

47 OpenGL x Direct3D Uso 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 As razões para a vantagem do OpenGL no mercado profissional é parcialmente histórica. Muitas aplicações gráficas profissionais (por exemplo, Softimage | 3D, Alias PowerAnimator) foram escritos originalmente em IRIS GL para high-end workstations SGI, em seguida, levado para o OpenGL. Mesmo muito tempo depois SGI deixou de dominar o mercado, muitas placas de vídeo com suporte OpenGL. foi um IRIS gráficos proprietários API criado pela Silicon Graphics (SGI) para produzir gráficos 2D e 3D de computador, IRIX baseado em estações gráficas Mais tarde SGI removido o seu código proprietário, reformulado várias chamadas do sistema, e liberou IRIS GL, como a indústria OpenGL padrão. Os muitos recursos extras do OpenGL que anteriormente foram mencionados como não é útil para o desenvolvimento de jogos são também um factor de vantagem do OpenGL mercado profissional, porque muitos deles são úteis em aplicações profissionais. A outra razão para a vantagem do OpenGL é marketing e design. O DirectX é um conjunto de APIs que não foram comercializados para aplicações gráficas profissionais. DirectX foi projetado para uma API de baixo nível, acesso de alta performance de hardware para fins de desenvolvimento de jogos. AutoCAD usa OpenGL, sim senhor. Porém, só fará diferença p/ quem trabalhar com modelagem 3D. A partir da versão 2000, o AutoCAD permite manipular objetos 3D em sombreamento (shade). Vc poderá criar e modificar objetos, usar zoom e pan em tempo real, isso tudo com os objetos sombreados em shade. Sem o uso da aceleração 3D por hardware, os recursos citados ficam bem mais lentos.

48 OpenGL x Direct3D Histó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 Nos primeiros dias de jogos 3D acelerado, desempenho e confiabilidade foram os indicadores mais importantes e diversas placas aceleradoras 3D competiram entre si pelo domínio.. Software foi escrito especificamente para uma determinada marca de placa gráfica.. No entanto, ao longo dos anos, OpenGL e Direct3D surgiu como camadas de software acima do hardware, principalmente por causa do apoio da indústria para uma cruzada biblioteca de gráficos de hardware. A concorrência entre os dois aumentou à medida que cada desenvolvedor de jogos seria optar por um ou outro. Na década de 1990, OpenGL dominado por um melhor design da interface e ainda domina o console e os mercados de mão

49 OpenGL x Direct3D Uso 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 OpenGL é usado pelo Linux e, mais recentemente, por todos os principais consoles de The Game, incluindo PSP e PS3 e Wii, da Nintendo. Console A exceção é, obviamente, Microsoft Xbox, que foi nomeado após as bibliotecas de gráficos DirectX foi projetado promover em um esforço para parar uma grande migração para OpenGL em jogos e uma consequente erosão do monopólio de software da Microsoft

50 Referências penGL.pdf do-o-opengl/ ftp://ftp.tecgraf.puc- rio.br/users/lfm/CIV2801Aula08OpenGL.pdf acao%20cg_files/review-pipeline.pdf pdf

51 Dúvidas


Carregar ppt "OpenGL André Chagas Filipe Melo Jacinto Reis Jonathan Soares"

Apresentações semelhantes


Anúncios Google