OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora



Documentos relacionados
Bruno Pereira Evangelista.

Open Graphics Library OpenGL

OpenGL. Alberto B. Raposo

Introdução. Dados. Imagens. 1. CG Computação Gráfica. 2. Paradigmas de Abstração

Prof. Fernando V. Paulovich 3 de maio de SCC Computação Gráca

Um Driver NDIS Para Interceptação de Datagramas IP

TRABALHO COM GRANDES MONTAGENS

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Pesquisa e organização de informação

Técnicas para Animação de Imagens em Jogos 2D Utilizando Java

Sumário 1. SOBRE O NFGoiana DESKTOP Apresentação Informações do sistema Acessando o NFGoiana Desktop

Orientação a Objetos

Microsoft Office PowerPoint 2007

MANUTENÇÃO DE MICRO. Mário Gomes de Oliveira

LIBREOFFICE: APRESENTAÇÃO COM O IMPRESS. Professor: Francisco Dantas Nobre Neto dantas.nobre@ifpb.edu.br

MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS.

SIMULADO Windows 7 Parte V

ESTUDO DE CASO WINDOWS VISTA

Ciências da Computação Disciplina:Computação Gráfica

Sistema Operacional Correção - Exercício de Revisão

Microsoft Access XP Módulo Um

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

Manual de instalação e configuração da Ferramenta Android SDK

1. Apresentação Objetivos

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Noções de. Microsoft SQL Server. Microsoft SQL Server

Lógica de Programação

Manual do Usuário Android Neocontrol

COMPUTAÇÃO GRÁFICA REPRESENTAÇÃO DE IMAGENS

Software automatizado para controle de consultas da clínica de fisioterapia

Versão PIMACO AUTOADESIVOS LTDA. Assistente Pimaco Ajuda ao Usuário

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Tutorial WEB CONTENT MANAGEMENT [WCM] Obtenha benefícios a partir das aplicações customizadas da ADMT.

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

Manual de Atualização Versão

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Introdução a Java. Hélder Nunes

Manual do Publicador. Wordpress FATEA Sistema de Gerenciamento de Conteúdo Web

PLANO DE SAÚDE SÃO CRISTOVÃO SITE - TISS DIGITAÇÃO E ENTREGA DE FATURAMENTO MANUAL DO USUÁRIO (PRESTADOR)

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Manual da Turma Virtual: MATERIAIS. Para acessar a turma virtual com o perfil Docente, siga o caminho indicado abaixo:

Laboratório de Redes. Professora Marcela Santos

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

DIFERENÇAS ENTRE FUNÇÃO E BLOCO FUNCIONAL; CRIAÇÃO DE FUNÇÃO / BLOCO FUNCIONAL; UTILIZAÇÃO NO LADDER; EXEMPLO DE BLOCO FUNCIONAL;

BOBCOSMOS SISTEMA SOLAR PROJETO FINAL DA DISCIPLINA INTRODUÇÃO A COMPUTACAO GRAFICA

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Este tutorial está publicado originalmente em

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word

6 - Gerência de Dispositivos

COLÉGIO ESTADUAL PAULO LEMINSKI APOSTILA SOBRE O BROFFICE IMPRESS

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual

PROJETO INFORMÁTICA NA ESCOLA

www. inf.br Outubro/2008 5www.habisp.inf.br TREINAMENTO HABISP VERBA DE ATENDIMENTO

DESENHO TÉCNICO AULA 01

Capítulo 2 Introdução à ferramenta Flash

1

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

Manual SAGe Versão 1.2 (a partir da versão )

Bem-vindo! O que há de novo no PaperPort 10?

ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E AULA TEÓRICA 2 PROF. MARCELO LUIZ SILVA (R E D)

Sistemas Operacionais

Formação em game programming: 01 - Introdução à programação

Procedimento para instalação do BLACKBERRY Software de Imagem via Celular

Sistemas Operacionais

Aplicações de Escritório Electrónico

Computador Máquina que processa uma grande quantidade de dados com rapidez e precisão.

UNIVERSIDADE FEDERAL DA PARAÍBA PRÓ REITORIA DE EXTENSÃO E ASSUNTOS COMUNITÁRIOS

CURSO DE PROGRAMAÇÃO EM JAVA

Feature-Driven Development

Os desenhos. Representação de desenhos

4 Estrutura do Sistema Operacional Kernel

INDICE 1. INTRODUÇÃO CONFIGURAÇÃO MÍNIMA INSTALAÇÃO INTERLIGAÇÃO DO SISTEMA ALGUNS RECURSOS SERVIDOR BAM...

Introdução à Computação

MANUAL TÉCNICO ISPBACKUP

Capítulo 5. Figura 5.2. Conector para o monitor.

Descrição do Produto. Altus S. A. 1

Introdução O que irá mudar? Por onde começar? Para que serve cada camada (layer)? Inserindo a ClickTag...

Cadastramento de Computadores. Manual do Usuário

Informática. Informática. Valdir

Manual de Instalação Software do etoken Aladdin pro 72k

FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? Professor Carlos Muniz

2. Função Produção/Operação/Valor Adicionado

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA TREINAMENTO EM INFORMÁTICA MÓDULO V

Portal Sindical. Manual Operacional Empresas/Escritórios

3. Arquitetura Básica do Computador

MANUAL DE UTILIZAÇÃO. Instalação do MV Portaria

Manual de Conversão para PDF Envio de Arquivos ao Diário Oficial

FASAR FACULDADE SANTA RITA

Mapas Interativos de Saúde Ambiental: Principais Funções.

O WINDOWS 98 é um sistema operacional gráfico, multitarefa, produzido pela Microsoft.

Sistemas Operacionais

Manual de Instalação Software do token SafeNet ikey 4000

CPU Unidade Central de Processamento. História e progresso

Transcrição:

OpenGL Uma Abordagem Prática e Objetiva Marcelo Cohen Isabel Harb Manssour Novatec Editora

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 evoluçã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 informaçã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 utilizaçã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. 17

18 OpenGL Uma Abordagem Prática e Objetiva Para aproveitar toda a capacidade do hardware disponível e facilitar o desenvolvimento de aplicações gráficas, novos programas são constantemente desenvolvidos. 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, bidimensional (2D) e tridimensional (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 incorpora 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 empresas 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 Programming Interface) para criação de programas gráficos 2D e 3D para diversas plataformas, 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, mapeamento 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.

Capítulo 1 Introdução 19 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 preenchida 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]. Chamadas a funções da API OpenGL Armazenamento em memória dos comandos OpenGL Processamento de dados geométricos e imagens Frame Buffer Operações de fragmento Rasterization 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].

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 estados; 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 consistem 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;

Capítulo 1 Introdução 21 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 programaçã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 relacionados 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.