• Nenhum resultado encontrado

OpenGL

N/A
N/A
Protected

Academic year: 2021

Share "OpenGL"

Copied!
6
0
0

Texto

(1)

OpenGL

Uma Abordagem Prática e Objetiva

Marcelo Cohen

Isabel Harb Manssour

(2)

17

Capítulo 1

Introdução

A Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento de técnicas e algoritmos para a geração, manipulação e análise de imagens pelo computador. Atualmente, a Computação Gráfica está presente em quase todas as áreas do conhecimento humano, desde o projeto de um novo modelo de automóvel até o desenvolvimento de ferramentas de entretenimento, entre as quais estão os jogos eletrônicos.

Analisando-se o histórico da Computação Gráfica é possível afirmar que a sua evolução, bem como o surgimento de novas áreas de aplicação, decorreram da evo-lução do próprio hardware. O trabalho com imagens foi viabilizado somente após a criação de dispositivos periféricos gráficos de entrada e saída. Antes, toda infor-mação era representada por meio de caracteres alfanuméricos. Além disso, devido aos numerosos cálculos matemáticos, as aplicações gráficas em geral demandam uma grande quantidade de computação. Portanto, foi a melhora dos equipamentos em termos de memória e velocidade que tornou possível o desenvolvimento e a execução de técnicas mais elaboradas de Computação Gráfica para a geração de imagens com alto grau de realismo.

Atualmente, além da disponibilidade de utilização de dispositivos para intera-ção em três dimensões, está se popularizando a utilizaintera-ção de placas aceleradoras gráficas. Como elas possuem uma grande quantidade de memória e capacidade de computação – além de implementação em hardware de conhecidos algoritmos de Computação Gráfica –, o microprocessador do computador pessoal fica liberado da maior parte do processamento gráfico. O surgimento dessas placas – possibilitando a geração de imagens e a interação com os programas em tempo real – acrescida do tratamento de dados espaciais – representaram um importante ponto de partida para o desenvolvimento de diversas outras aplicações.

(3)

18 OpenGL • Uma Abordagem Prática e Objetiva

Para aproveitar toda a capacidade do hardware disponível e facilitar o desenvol-vimento de aplicações gráficas, novos programas são constantemente desenvolvi-dos. Para os programadores, o mais usual é utilizar uma biblioteca ou um pacote gráfico, que consiste em um conjunto de rotinas gráficas básicas. Assim, é possível elaborar rapidamente programas sem a necessidade de se preocupar com detalhes particulares dos dispositivos ou com a implementação de algoritmos básicos, como, por exemplo, o desenho de um segmento de reta.

OpenGL (Open Graphics Library), definida também como uma “interface para hardware gráfico”, é uma biblioteca de rotinas gráficas e de modelagem, bidimen-sional (2D) e tridimenbidimen-sional (3D), extremamente portável e rápida. Ela permite desenvolver aplicações interativas e gerar imagens de cenas 3D com um alto grau de realismo. Entretanto, a sua maior vantagem é a velocidade, uma vez que incor-pora vários algoritmos otimizados, incluindo o desenho de primitivas gráficas, o mapeamento de textura e outros efeitos especiais.

A especificação OpenGL é gerenciada por um consórcio independente formado em 1992, o ARB (Architecture Review Board). O grupo, constituído por muitas em-presas líderes da área, entre as quais estão a 3Dlabs, Apple Computer, NVIDIA, SGI e SUN, é responsável pela aprovação de novas funcionalidades, versões e extensões de OpenGL. As freqüentes revisões da especificação OpenGL permitem a sua constante evolução e aproveitamento da capacidade do hardware gráfico. Atualmente, a versão 2.0 da especificação está disponível para download em http://www.opengl.org.

Em resumo, OpenGL é uma poderosa e sofisticada API (Application Program-ming Interface) para criação de programas gráficos 2D e 3D para diversas plata-formas, de potentes estações de trabalho a simples computadores pessoais. Seu funcionamento é semelhante ao de uma biblioteca da linguagem de programação C. Portanto, quando se diz que um programa é baseado em OpenGL ou é uma aplicação OpenGL, significa que foi escrito em alguma linguagem de programação e utiliza uma ou mais bibliotecas OpenGL.

As aplicações OpenGL variam de ferramentas CAD a poderosos programas de modelagem. Um exemplo é a sua utilização para criar personagens de animações. Além do desenho de primitivas gráficas, tais como linhas e polígonos, a OpenGL possui funções que permitem adotar técnicas de iluminação, colorização, mape-amento de textura, transparência, a já mencionada animação, entre vários outros efeitos especiais. Atualmente, a OpenGL é reconhecida e aceita como um padrão de API para o desenvolvimento de aplicações gráficas 3D interativas e que geram imagens em tempo real.

(4)

Quando a OpenGL é utilizada, em vez de descrever detalhadamente uma cena 2D ou 3D, basta especificar o conjunto de passos que devem ser seguidos para se obter o aspecto ou o efeito desejado. Esses passos envolvem chamadas a rotinas desta API que inclui em torno de 250 funções: 200 da própria biblioteca OpenGL e 50 da biblioteca GLU (OpenGL Utility Library), que faz parte da implementação OpenGL.

Por ser portável, a OpenGL não possui funções para gerenciamento de janelas, tratamento de eventos ou manipulação de arquivos. Neste caso, são utilizadas as funções específicas de cada plataforma para tal propósito, como, por exemplo, a pró-pria API do ambiente Microsoft Windows. Tampouco existe um formato de arquivo OpenGL para descrição dos modelos e ambientes virtuais. OpenGL oferece apenas um pequeno conjunto de primitivas gráficas, como pontos, linhas e polígonos, para exibição de modelos. Já a biblioteca GLU fornece algumas funções para modelagem. Superfícies quádricas, assim como curvas e superfícies NURBS (Non Uniform Rational B-Splines) são algumas delas [Schreiner, 2004; Wright, 2000].

A palavra pipeline é usada para descrever um processo composto de duas ou

mais etapas para a geração de uma imagem. A Figura 1.1, adaptada de [Schreiner, 2004] e [Wright, 2000], mostra uma versão simplificada do pipeline OpenGL. Como

uma aplicação faz chamadas a várias funções da API OpenGL, os comandos são armazenados em uma memória específica (buffer de comandos). Depois de ser pre-enchida com comandos de desenho de primitivas, iluminação e dados de textura, entre outros, ela é “esvaziada”, ou seja, os comandos e dados são passados para o próximo estágio do pipeline [Wright, 2000].

Frame Buffer Operações defragmento Rasterization

Chamadas a funções da API OpenGL Processamento de dados geométricos e imagens Armazenamento em memória dos comandos OpenGL

Figura 1.1 – Versão simplificada do pipeline OpenGL.

Dados geométricos (por exemplo, vértices) são processados de forma diferente de dados de imagens, tais como pixels. Entretanto, após algumas etapas específicas, ambos passam pelo estágio de rasterization do pipeline, que consiste na conversão

para fragmentos. Um fragmento em OpenGL nada mais é do que uma posição na tela, que, além da cor, possui outras informações associadas, tais como profundidade e coordenadas de textura. Cada fragmento contribui para a atualização dos pixels do frame buffer, que corresponde à memória do dispositivo gráfico. Depois disso,

várias operações – entre as quais oclusão e transparência – podem ser executadas, antes da exibição da imagem final no monitor [Schreiner, 2004; Wright, 2000].

(5)

20 OpenGL • Uma Abordagem Prática e Objetiva

Este capítulo contém apenas uma introdução à biblioteca gráfica OpenGL. Uma descrição de como utilizá-la pode ser encontrada no Capítulo 2. Todos os exemplos apresentados e os arquivos necessários para trabalhar com OpenGL estão disponíveis no site da Novatec, no seguinte endereço http://www.novatec.com.br/download/. O conteúdo dos demais capítulos é apresentado a seguir:

Capítulo 2: descreve como instalar e utilizar as bibliotecas OpenGL;

Capítulo 3: apresenta um primeiro programa em OpenGL, a fim de dar uma visão geral ao leitor;

Capítulo 4: oferece uma descrição da convenção de nomes adotada para as funções e os tipos de dados;

Capítulo 5: descreve a GLUT, biblioteca responsável pelo gerenciamento de janelas e tratamento de eventos, independentemente de plataforma;

Capítulo 6: aborda o funcionamento de OpenGL como uma máquina de esta-dos;

Capítulo 7: contém conceitos de Computação Gráfica associados a comandos OpenGL para especificação do espaço de trabalho – a leitura desse capítulo é fundamental para o entendimento dos exemplos do livro;

Capítulo 8: ensina a fazer desenhos 2D utilizando primitivas gráficas, que con-sistem nos elementos básicos que compõem um desenho: pontos, segmentos de reta e quadriláteros, entre outros;

Capítulo 9: descreve como aplicar transformações de escala, rotação e translação sobre as primitivas gráficas, a fim de alterar seu tamanho, orientação e posição, respectivamente;

Capítulo 10: mostra como trabalhar com animação em OpenGL;

Capítulo 11: ilustra como implementar as operações de zoom (para visualizar um objeto ou conjunto de objetos mais próximo ou mais afastado) e pan

(para deslocar a janela de visualização no universo virtual), utilizando tanto o teclado quanto o mouse;

Capítulo 12: descreve como trabalhar com imagens em OpenGL; • Capítulo 13: explica como fazer desenhos 3D;

Capítulo 14: aborda a questão da iluminação em cenas 3D, fundamental para que os objetos tenham a aparência tridimensional;

(6)

Capítulo 15: mostra como empregar recursos baseados na operação de mistura de cores (blending), em especial transparência e efeitos atmosféricos;

Capítulo 16: ensina como utilizar o mapeamento de textura em OpenGL; • Capítulo 17: sugere algumas técnicas para otimizar o processo de rendering, tais

como display lists e vertex arrays;

Capítulo 18: ilustra a utilização dos vários buffers disponíveis em OpenGL, necessários para implementar, por exemplo, sombra e motion blur [Foley,

1990];

Capítulo 19: apresenta uma introdução ao procedimento de selecionar objetos em uma imagem 3D com o uso do mouse;

Capítulo 20: mostra a utilização de OpenGL com outras linguagens de progra-mação: C++, Java e Python;

Capítulo 21: introduz a programação de shaders, por meio da OpenGL Shading Language;

Apêndices: contêm as referências bibliográficas, uma lista de links para sites re-lacionados com OpenGL; um guia rápido de referência para algumas funções OpenGL, GLU e GLUT, além de uma descrição detalhada de uma biblioteca de estruturas e funções auxiliares que aparece em vários exemplos deste livro.

Referências

Documentos relacionados

Fazer um programa que possa desenhar linhas com o mouse Esse programa só deve desenhar com o mouse pressionado Esse programa deve fazer uso do teclado para trocar o cor. 28

 os diâmetros e os comprimentos com maior número de fibras foram os intervalos de menor tamanho supondo que na natureza é comum encontrar fibras evidenciando que fibras mais

intermedia (Yi) strains isolated from humans (one), animals (two) and environment (64) according to their source of isolation, origin and year of reception.. a

In this booklet you will find samples of exercises, quizzes and an answer key from the Conversational Portuguese Series 2 Workbook by Maria Oliveira.. You will also find the

obtidas em cada base, também são registradas, elas são utilizadas para dar volume ao sistema subterrâneo.. Trabalhos sobre levantamentos topográficos em cavernas [1,2] discutem

Entretanto, se tomar o Mytfor (cloridrato de metformina) juntamente com outros medicamentos para o tratamento da diabetes que possam causar hipoglicemia (tais como

Vacinação - Brasil, cidade do Rio de Janeiro e Maré Testagem - Dados do Bem Telemedicina SAS Brasil Programa Isolamento Seguro - SAS Brasil + Redes da Maré Gabi Lin o/ Con

A população frequentemente não aprova o recolhimento de animais e as instalações públicas para alojamento e, uma vez que o incentivo à propriedade, posse ou guarda responsável é