• Nenhum resultado encontrado

OpenGL é definida como “um software de interface para hardware gráficos”

[49]. Na verdade, OpenGL é um conjunto de bibliotecas de comandos gráficos ou API (Application Programming Interface – Interface de Aplicação de Programação) para desenvolvimento de aplicações gráficas e de modelagem bi (2D) e tri-dimensional (3D).

Ela foi introduzida pela Silicon Graphics, Inc. (SGI), líder mundial em Computação

Gráfica, em 1992, no intuito de dar suporte a várias plataformas de hardware, assim como diversos sistemas operacionais.

As bibliotecas OpenGL têm como maior vantagem a sua utilização e rapidez, isto devido aos algoritmos cuidadosamente desenvolvidos pela SGI. A maioria das suas rotinas são implementadas na linguagem C, tornando mais fácil a sua utilização em qualquer programa escrito em C ou C++. O acesso a suas bibliotecas é semelhante ao uso das elaboradas para a linguagem C.

As aplicações OpenGL são diversas, como por exemplo, ferramentas CAD e CAM, modelagem, animação, jogos, desenvolvimento de ferramentas de realidade virtual e simuladores, análise de dados e mapeamento geográfico, etc [50], além de suas primitivas gráficas. Geralmente dizemos que um programa é baseado em OpenGL, ou é uma aplicação OpenGL, o que significa que ele é escrito em alguma linguagem de programação que faz chamadas a uma ou mais bibliotecas OpenGL [38].

Uma aplicação feita em OpenGL conta com diversos recursos, como suporte a iluminação, coloração, mapeamento de textura, transparência, entre muitos outros efeitos. Ao invés de descrevermos uma cena e como ela deve ser renderizada, quando se usa OpenGL é preciso apenas determinar os passos, ou seja, as chamadas a API, necessários para alcançar a aparência ou efeito desejado.

As implementações do OpenGL geralmente provêem de bibliotecas auxiliares, tais como a GLU (OpenGL Utility Library – Biblioteca de Utilidades OpenGL), utilizada para realizar tarefas comuns, tais como manipulação de matrizes, geração de superfícies e construção de objetos por composição [70], e a GLUT (OpenGL Toolkit) para gerenciamento de janelas.

O OpenGL utiliza o que chamamos de “processo em pipeline”. Esse tipo de processo pode ter dois ou mais passos, dependendo da aplicação. Cada passo corresponde a um estágio de transformação que começa com uma chamada às funções API OpenGL, e em seguida os comandos são colocados em um buffer de comandos.

Este buffer é preenchido com comandos, vértices, dados de textura, etc. Quando este é

“esvaziado”, os comandos e dados são passados para o próximo estágio, que é o de transformações geométricas e iluminação. As transformações geométricas correspondem à manipulação de um modelo, ou seja, a alteração de sua escala, rotação ou posição. Já a iluminação de um objeto é caracterizada pela quantidade de RGB (red, green and blue - vermelho, verde e azul) que uma fonte de luz emite e pela percentagem dos mesmos que chegam ao objeto e são refletidos em várias direções. O

terceiro passo é o de “Rasterização” (Raster - desenho de linhas, antes de surgir a imagem), que é onde se é gerada a imagem a partir dos dados geométricos de cor e de textura. Por último, a imagem é colocada no frame buffer, que é a memória do dispositivo gráfico. Isto significa que a imagem é exibida no monitor [71]. O modelo pipeline pode ser observado na figura abaixo:

Figura 4.1 – Modelo do processo em pipeline.

Devido ao fato de poderem ser portáteis, programas OpenGL não possuem funções para gerenciamento de janelas, iteração com o usuário ou arquivos de entrada/saída (isto é função, por exemplo, da GLUT), foi utilizado neste trabalho o recurso de uma outra biblioteca gráfica chamada Qt, e de uma ferramenta chamada Qt Designer, ambas da empresa de software Trolltech. Esta biblioteca é, ao mesmo tempo, uma classe de biblioteca C/C++ e um kit de ferramentas GUI (Graphic User Interface – Interface Gráfica do Usuário) [66].

O kit de ferramentas Qt para C++ tem sido utilizado amplamente para aplicações comerciais, desde 1995, em companhias diversas, como a Adobe, IBM, Motorola, NASA, Volvo, e por numerosas companhias e organizações menores [66].

Uma das vantagens de escolher o Qt e o Qt Designer para se trabalhar é que ambas são gratuitas (livres para Unix e disponível em versão não-comercial para Windows) e multiplataforma, ou seja, estão disponíveis em vários tipos de plataformas diferentes. Sendo assim, todos os componentes do programa podem ser compilados nos diversos ambientes Unix, Windows e Macintosh, bastando para isto possuir a versão do Qt para cada sistema operacional e um compilador C++.

Qt é muito mais do que um kit de ferramentas de bibliotecas gráficas. Ela inclui um conjunto vasto de controles que fornecem uma funcionalidade GUI (Graphic User Interface – Interface Gráfica de Usuário) padrão. Além das características gráficas básicas, Qt suporta a utilização de bases de dados, arquivos, sistemas de arquivos e

“sockets”, tudo isso de uma forma independente de plataforma [17]. Ela é escrita em C++, sendo completamente orientado a objetos é, também, dirigida a eventos (“event driven”). Qt estende a idéia original de objetos, onde existem métodos e atributos,

incrementando esse conceito com alternativas inovadoras para a comunicação entre objetos, chamada “Signals & Slots”. Signals são funções protótipo que podem ser utilizadas para emitir sinais, e Slots, são funções simples que são usadas para capturar os sinais e executar uma determinada ação.

Outras funcionalidades do Qt são o fornecimento a modelos de eventos convencionais para cliques de mouse, pressionamento de botões, etc; o uso de funcionalidades de interface de usuário requisitadas por aplicações modernas, como menus, menus de contexto, arrastar e soltar, etc; e também a utilização de um compilador chamado “moc” (meta object compiler) que cria meta objetos, ou seja, objetos que descrevem outros objetos. Este compilador permite a criação de componentes para a reutilização.

Documentos relacionados