Capítulo 1. Conceitos iniciais
1.1. O que é OpenGL
OpenGL é uma interface de software para
dispositivos de hardware. É uma biblioteca gráfica de
modelagem e exibição tridimensional, bastante rápida e portável para vários
sistemas operacionais. Seus recursos permitem ao usuário criar objetos gráficos
com qualidade próxima à de um raytracer, de modo mais
rápido que este último, além de incluir recursos avançados de animação,
tratamento de imagens e texturas.
A biblioteca OpenGL (Open Graphics Library) foi
introduzida em 1992 pela Silicon Graphics (http://www.sgi.com/), no intuito de conceber uma API (Interface
de Programação de Aplicação) gráfica independente de dispositivos de exibição.
Com isto, seria estabelecida uma ponte entre o processo de modelagem geométrica
de objetos, situadas em um nível de abstração mais elevado, e as rotinas de
exibição e de processamento de imagens implementadas em dispositivos (hardware)
e sistemas operacionais específicos. A função utilizada pelo OpenGL para
desenhar um ponto na tela, por exemplo, possui o mesmo nome e parâmetros em
todos os sistemas operacionais nos quais OpenGL foi implementada, e produz o
mesmo efeito de exibição em cada um destes sistemas. Atualmente, um consórcio
independente é quem administra as especificações do OpenGL, chamado de
Architecture Review Board (ARB).
Diversos jogos, aplicações científicas e comerciais tem utilizado OpenGL como
ferramenta de apresentação de recursos visuais, principalmente com a adoção
deste padrão por parte dos fabricantes de placas de vídeo destinadas aos
consumidores domésticos. É possível encontrar
na Internet diversos sites que tratam sobre OpenGL; o
mais popular é a sua página oficial: http://www.opengl.org/. Neste endereço encontram-se disponíveis
diversos artigos e links sobre o assunto, fóruns de
discussão, informações sobre a evolução desse padrão, além de uma série de
programas utilitários.
Todas as rotinas do OpenGL são implementadas em C, tornando fácil sua
utilização em qualquer programa escrito em C ou C++.
Entre os recursos gráficos disponíveis pelo OpenGL, podem ser destacados os
seguintes:
-
Modos de desenho de pontos;
-
Ajuste de largura de linhas;
-
Aplicação de transparência ;
-
Ativação/desativação de serrilhamento (aliasing);
-
Mapeamento de superfícies com textura;
-
Seleção de janela de desenho;
-
Manipulação de fontes/tipos de iluminação e sombreamento;
-
Transformação de sistemas de coordenadas.
-
Transformações em perspectiva
-
Combinação de imagens (blending)
Diversos desenvolvedores de software possuem suas próprias implementações do
OpenGL. Entre as implementações mais populares, destacam-se aquelas providas
pela Microsoft, a biblioteca compartilhada dinâmica opengl32.dll, pela própria SGI, opengl.dll, e o pacote Mesa3D (http://www.mesa3d.org/).
As implementações do OpenGL geralmente provêem bibliotecas auxiliares, tais
como a GLU (OpenGL Utility library), utilizada para
realizar tarefas comuns, tais como manipulação de matrizes, geração de
superfícies e construção de objetos por composição, e a OpenGL Utility Toolkit (GLUT), uma biblioteca que
permite criar janelas, menus, manipular eventos, entre outras coisas,
independentemente do sistema operacional utilizado. Aplicações escritas em
OpenGL/GLUT podem ser compiladas em Windows ou Unix, sem necessidade de
alterações em seus códigos.