|
Open Graphics
Library (OpenGL®)
[Artigo em *.pdf]
| [Slides da Apresentação em *.pdf]
por
Filipe Gonçalves Barreto de Oliveira
Castilho
Nuno Alexandre Simões Aires da Costa
Departamento de Engenharia Informática
Universidade de Coimbra
3030 Coimbra, Portugal
fgonc@student.dei.uc.pt
nacosta@student.dei.uc.pt
Resumo: Apresenta-se, de uma forma um pouco técnica, o funcionamento do Open Graphics Library (OpenGL). Para esse efeito, descrevem-se as características gerais da plataforma, seguindo-se uma análise pormenorizada das componentes mais importantes que lhe dão vida. Finaliza-se com um exemplo simples do código de um programa para esta plataforma, seguida de uma comparação entre o OpenGL e o seu oponente directo, o Direct3D. Pretende-se com a abordagem seguida, dar a conhecer melhor o OpenGL e motivar o leitor a aprofundar os seus conhecimentos. Palavras-Chave: Open Graphics Library, OpenGL, 3D Graphics API, Framebuffer, Renderização, Antialiasing, Display List, Direct3D. |
1. Introdução |
O grafismo computacional (em particular os gráficos tridimensionais [3D] e
gráficos 3D interactivos) está a surgir cada vez mais num grande número de
aplicações informáticas, desde os simples programas para construção de gráficos
até aos mais complexos e potentes programas de modelação e visualização gráfica
para super computadores e estações gráficas. À medida que o interesse pelo
processamento gráfico computacional tem vindo a aumentar, também tem vindo a
crescer o desejo de produzir aplicações que usufruam dos gráficos 3D e que sejam
passíveis de ser executadas em várias arquitecturas com capacidade de
processamento gráfico diferente. A introdução de uma norma na área do grafismo
computacional facilita esta tarefa, eliminando a necessidade de programar
diferentes controladores gráficos para cada arquitectura onde as aplicações
finais irão ser executadas.
Na área do grafismo a duas dimensões [2D], várias normas conseguiram ser
implementadas. A linguagem PostScript é um exemplo. A norma que engloba esta
linguagem simplificou o processo de troca electrónica e, até um certo grau de
limitação, a manipulação de documentos estáticos que combinavam texto com
gráficos 2D. O sistema de janelas X (X Windows System) é a norma para os
computadores com UNIX. Um programador usa o X para obter uma janela no monitor,
na qual se pode escrever texto ou desenhar conteúdos 2D. A adopção do X pelos
diversos fabricantes, permite que um programa produza gráficos 2D ou obtenha
interacção com o utilizador numa vasta gama de diferentes computadores,
necessitando apenas de recompilar o programa. Esta integração até funciona
através de uma rede: o programa pode executar uma vez num computador e mostrar a
interacção com o utilizador noutro computador situado do outro lado da rede,
mesmo que este tenho sido construído por outro fabricante [1].
Foram apresentadas diversas normas para a área dos gráficos a três dimensões,
mas a maior parte delas não conseguiu ganhar grande aceitação. Um sistema
relativamente bem conhecido é o PHIGS (Programmer’s Hierarchical Interactive
Graphics System). Baseado no sistema GKS (Graphics Kernel System), o PHIGS faz
parte da uma norma ANSI (American National Standards Institute). O PHIGS (e o
seu descendente PHIGS+), fornece meios para manipular e desenhar objectos
tridimensionais (3D) através do encapsulamento de descrições e atributos dos
objectos para uma display list que depois é referenciada quando o objecto é para
ser mostrado ou manipulado. Uma vantagem da display list é que um objecto
complexo precisa apenas de ser descrito uma vez, mesmo quando ele precisa de ser
mostrado várias vezes. Isto é especialmente importante se o objecto a ser
mostrado precisa de ser transmitido por um canal com baixa largura de banda. Uma
desvantagem da display list pode surgir quando um objecto está constantemente a
ser alterado por interacção com o utilizador, resultando um gasto considerável
de esforço para o voltar a especificar. Outra dificuldade do PHIGS e PHIGS+ (e
também com o GKS) é a falta de suporte para técnicas de renderização avançada (advanced
rendering) nomeadamente mapeamento de texturas (texture mapping) [1].
O PEX, que é um acrónimo da extensão do PHIGS para o sistema de janelas do UNIX
(o X), torna o X capaz de processar e manipular conteúdos 3D. Para além de
outras extensões, o PEX torna o PHIGS capaz de mostrar objectos ao mesmo tempo
que estes são descritos, ao invés de primeiro ter de completar a display list. A
esta funcionalidade chama-se “modo de renderização imediata” (immediate mode
rendering). Uma dificuldade do PEX, é o facto de diferentes fabricantes
decidirem suportar diferentes funcionalidades, tornando a portabilidade das
aplicações medíocre. O PEX, tal como o PHIGS, também não tem suporte para
técnicas de renderização avançada e só está disponível para utilizadores do X.
Em 1992 foi introduzido no mundo da computação o OpenGL, que com o decorrer dos
anos acabou por se tornar o ambiente de desenvolvimento de referência para
aplicações leves de conteúdos dinâmicos 2D e 3D. O API (Application Programming
Interface) OpenGL tornou-se o utilitário mais usado e com melhor gama de
efeitos, para programação de aplicações com gráficos 2D e 3D, podendo ser usado
em todo o tipo de computadores pessoais e estações gráficas, proporcionando
assim uma grande portabilidade [2, 3].