Capítulo 1. Conceitos iniciais

Índice
1.1. O que é OpenGL
1.2. Operação normal
1.3. Compilando programas que utilizam OpenGL

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 (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. As função utilizada pelo OpenGL para desenhar um ponto na tela, por exemplo, possui os mesmos 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.

Diante das funcionalidades providas pelo OpenGL, tal biblioteca tem se tornado um padrão amplamente adotado na indústria de desenvolvimento de aplicações. Este fato tem sido encorajado também pela facilidade de aprendizado, pela estabilidade das rotinas, pela boa documentação disponível [Neider2000] e pelos resultados visuais consistentes para qualquer sistema de exibição concordante com este padrão. É possível encontrar na Internet diversos sites que tratam sobre OpenGL; o mais popular é a sua página oficial: 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.

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.

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:

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 (www.mesa3d.org). Esta última é uma implementação Opengl conformant, ou seja, possui funcionalidades semelhantes às do OpenGL, além de ser completamente gratuita e funcionar nos sistemas operacionais Windows 9x/NT, MS-DOS e Unix, facilitando ainda mais a portabilidade de aplicações.

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.

As especificações do OpenGL não descrevem as interações entre OpenGL e o sistema de janelas utilizado (Windows, X Window etc). Assim, tarefas comuns em uma aplicação, tais como criar janelas gráficas, gerenciar eventos provenientes de mouse e teclado, e apresentação de menus ficam a cargo de bibliotecas próprias de cada sistema operacional. Neste contexto, merece destaque 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. GLUT também foi desenvolvida pela SGI. No site oficial da GLUT (reality.sgi.com/mjk/glut3) estão disponíveis o código fonte dessa biblioteca, versões pré-compiladas para alguns sistemas operacionais, e toda a documentação incluída.