Conceitos iniciais

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.