OpenGL

Página  1  de  8  

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

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8