Computação Gráfica - 04

Documentos relacionados
Desenho de uma matriz de retângulos Serve de base para o exercício das cores

OpenGL, GLU e GLUT. GLUT (OpenGL Utility Toolkit) OpenGL. Linguagem. OpenGL. Esqueleto de um programa em PyOpenGL

Introdução a OpenGL. Renato Rodrigues Oliveira da Silva Danilo Medeiros Eler

Computação Gráfica OpenGl 01

Computação Gráfica - 06

Computação Gráfica OpenGL 05 3D

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 2. Introdução a OpenGL

Computação Gráfica 09

Computação Gráfica - OpenGl 02

Programação Gráfica 2D com OpenGL (Aulas 22, 24 e 25)

OpenGL. Introdução ao OpenGL. Sistemas de Coordenadas. OpenGL 29/04/2010. Profa. M. Cristina Profa. Rosane. Application Programming Interface (API)

- INF Remoção de faces ocultas Aula 21

Introdução à Informática. Aula 07 MS WORD. Prof. Fábio Nelson

Introdução a Prática em OpenGL

Introdução ao OpenGL. Professora: Maria Cristina Ferreira de Oliveira. Erick Gómez Nieto Agosto, 2011 Introdução ao OpenGL

INTRODUÇÃO A OPENGL. Computação Gráfica

Menu de Barras na Screen 0

Computação Gráfica OpenGl 03

Aula Prática Laboratorial n.º 8, nº 9 e nº 10

COMPUTAÇÃO GRÁFICA - PROF. MSC. LEANDRO TONIETTO SELEÇÃO DE OBJETOS EM OPENGL - SELECT BUFFER

Capítulo 3 Primeiros Passos em OpenGL Função Desenha Função Teclado Função Inicializa Programa Principal...

Fundamentos de Computação Gráfica

Introdução a OpenGL. Profª. Alessandra Martins Coelho

n À primeira vista: basta desenhar n Uma subrotina para desenhar cada tipo de objeto n Mas... n Como fazer interação? n Como estruturar a cena?

OmniPC 4.2 Guia do usuário

Computação Gráfica - 13

Conceitos importantes da Computação Gráfica [3]

NIVELAMENTO DE INFORMÁTICA. Professor: Cleber Semensate

OpenGL. Computação Gráfica ISEL/DEETC/SP Computação Gráfica

Introdução à OpenGL. SCC0250/ Computação Gráfica

OpenGL. Introdução ao OpenGL. OpenGL. OpenGL. OpenGL. OpenGL. Profa. M. Cristina Profa. Rosane

Computação Gráfica OpenGL 05 3D

Introdução a Tecnologia da Informação

Cap. 4: Janelas, Visores & Recorte Gráfico

Comandos básicos do AutoCAD

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 6. Projeções

COMPUTAÇÃO GRÁFICA II E III. Posicionamento e edição de módulos

CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark

Usando Display Gráfico com C18 e C30

Transformações geométricas

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Terceiro Teste 19 de Maio de 2012

Estudo de Funções: Transformações Gráficas com Graph2Go

APRESENTAÇÃO... 3 IGEO... 3 ACESSO AO SISTEMA... 4 MANUAL DO USUÁRIO... 4 FUNCIONALIDADES... 5 NAVEGAÇÃO E CONSULTA... 5 MANIPULAÇÃO DE CAMADAS...

Introdução à Programação

Ambiente de programação

Atalhos de teclado do Excel 2010

Seja bem vindo a sua AMP! AULA MODELO PROFESSOR- AMP

Introdução à Programação em OpenGL. Prof. Márcio Bueno

Computação Gráfica - 13

Estruturas de Repetição

1ª Lista de Exercícios

CAPÍTULO II VISUALIZAÇÃO E APLICAÇÕES GRÁFICAS 2D 3 1- PONTOS E RETAS NO OPENGL 3. 2 TECLADO E MOUSE (Callbacks) 15 3 CURVAS PARAMÉTRICAS 20

10. CRIANDO FORMULÁRIOS DO VBA

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes

Programa Analítico de Disciplina CIV180 Projeto Assistido por Computador

SUMÁRIO. Excel

A configuração é bem simples e é feita através de um painel onde cada gesto é associado a um comando do NetBeans.

Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009

Menu de Barras na Screen 0

No sub menu de Formatos temos algumas opções a trabalhar. Vejamos cada uma

Visibilidade. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 7 Apontamentos CG

Computação Gráfica. Agostinho Brito. Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte

Computação Gráfica. Primitivas Gráficas Professora Sheila Cáceres

O MICROSOFT OFFICE WORD 2010

Parte 1 Cena Simples Interativa com Câmara Fixa

Transcrição:

Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Computação Gráfica - 04 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav

Gerenciamento de eventos: mouse e teclado A biblioteca GLUT também contém funções para gerenciar eventos de entrada de teclado e mouse. glutkeyboardfunc - Estabelece a função que é chamada pela GLUT cada vez que uma tecla que gera código ASCII é pressionada (por exemplo: a, b, A, b, 1, 2). Além do valor ASCII da tecla, a posição (x,y) do mouse quando a tecla foi pressionada também é retornada. Parâmetros de entrada da função callback: (unsigned char key, int x, int y). Ao invés de usar o código ASCII, podemos usar o próprio caracter entre apóstrofos: q ou Q. Página 2

Gerenciamento de eventos: mouse e teclado glutspecialfunc - Estabelece a função que é chamada pela GLUT cada vez que uma tecla que gera código não-ascii é pressionada, tais como Home, End, PgUp, PgDn, F1 e F2. (unsigned char key, int x, int y). Os valores válidos para o primeiro parâmetro são: GLUT_KEY_F1, GLUT_KEY_F2, GLUT_KEY_F3, GLUT_KEY_F4, GLUT_KEY_F5, GLUT_KEY_F6, GLUT_KEY_F7, GLUT_KEY_F8, GLUT_KEY_F9, GLUT_KEY_F10, GLUT_KEY_F11, GLUT_KEY_F12, GLUT_KEY_LEFT, GLUT_KEY_UP, GLUT_KEY_RIGHT, GLUT_KEY_DOWN, GLUT_KEY_PAGE_UP, GLUT_KEY_PAGE_DOWN, GLUT_KEY_HOME, GLUT_KEY_END, GLUT_KEY_INSERT. Página 3

Gerenciamento de eventos: mouse e teclado glutmousefunc- Estabelece a função que é chamada pela GLUT cada vez que ocorre um evento de mouse. Parâmetros de entrada da função callback: (int button, int state, int x, int y). Três valores são válidos para o parâmetro button: GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON e GLUT_RIGHT_BUTTON. O parâmetro state pode ser GLUT_UP ou GLUT_DOWN. Os parâmetros x e y indicam a localização do mouse no momento que o evento ocorreu. Código Exemplo do uso do mouse e teclado. http://migre.me/1meug - interação Página 4

Gerenciamento de janelas Redimensionamento proporcional da janela Quando alteramos o tamanho da janela da aplicação, a área interna onde estão sendo exibidos os desenhos precisa acompanhar esse redimensionamento. Isso deve se feito para que os eixos x e y nos quais as coordenadas dos pontos dos objetos são definidos, possam ser ajustados para esse novo tamanho da janela. A função glutreshapefunc faz chamada a uma função recursiva pré-definida pelo programador para tratar das dimensões da tela a cada vez que a mesma seja redimensionada. Página 5

Gerenciamento de janelas Redimensionamento proporcional da janela Além disso, podemos estabelecer que a janela de visualização (viewport) dos objetos pode ser menor do que a janela da aplicação. Isso pode ser útil quando queremos destinar parte da janela para menus, instruções etc.. glviewport( int x, int y, width, height) - Seus parâmetros especificam o canto inferior esquerdo da viewport (x,y) dentro da janela, e a sua largura e altura em pixels (width e height). Geralmente x e y são zero, mas é possível usar a viewport para fazer o render de mais de uma cena em diferentes áreas da janela. Página 6

Gerenciamento de janelas Redimensionamento proporcional da janela Em outras palavras, a viewport define a área dentro janela, em coordenadas de tela, que a OpenGL pode usar para fazer o desenho. O volume de visualização é, então, mapeado para a nova viewport. Código exemplo: http://migre.me/1mwxw (quadrado) Observar a chamada de redimensionamento. Para usar mais de uma viewport na mesma aplicação, basta fazer quantas chamadas glviewport necessárias. Código exemplo: http://migre.me/1mxfz (DuasViewport) Página 7

Gerenciamento de janelas Redimensionamento proporcional da janela Página 8

Gerenciamento de janelas Redimensionamento proporcional da janela Podemos alterar os parâmetros da janela da aplicação para controlarmos o zoom da imagem. Altera-se somente o tamanho da janela. Não usa a escala para alterar o tamanho dos objetos. Código exemplo: http://migre.me/1my1z - (Casa com zoom) Usar as setas para cima/para baixo para aplicar o zoom. Página 9

Animação É possível criar um laço que continuamente altera as coordenadas do objeto antes de chamar a função "Desenha". Isto daria a impressão de que o quadrado se move na janela. Porém, a biblioteca GLUT fornece a possibilidade de registrar uma função que torna mais fácil o processo de fazer uma simples animação. A função gluttimerfunc pega o nome da função que deve ser chamada e o tempo que ela deve esperar antes de chamar a função. Página 10

Animação gluttimerfunc(unsigned int msecs, void (*func)(int value), int value)- estabelece a função Timer previamente definida como a função de animação. Esta função faz a GLUT esperar msecs milisegundos antes de chamar a função func. Como esta função é "disparada" apenas uma vez, para se ter uma animação contínua é necessário reinicializar o timer novamente na função Timer. void Timer(int value)- é a função chamada pela gluttimerfunc. Código Exemplo: http://migre.me/1mylk Página 11

Animação Observar que no código-fonte exemplo da animação, foi trocado o modo de exibição da janela para double. O double-buffering é uma das características mais importantes em qualquer pacote gráfico que está disponível na GLUT. Ele permite que um desenho seja exibido na tela enquanto está sendo realizado o rendering em um offscreen buffer. Então, um comando de swap coloca a imagem na tela assim que a imagem seguinte é formada. Isto é útil, principalmente, por dois motivos: -Alguns desenhos complexos podem levar um certo tempo para serem feitos, e não é desejado que cada passo da composição da imagem seja visível; - É possível compor uma imagem e exibi-la somente depois de completa, de maneira que o usuário nunca vê uma imagem parcial, pois ela é exibida somente quando está pronta. Página 12

Animação No caso de uma animação, cada quadro (ou frame) é desenhado no offscreen buffer e é exibido (swapped) rapidamente depois de pronto. glutinitdisplaymode(glut_double GLUT_RGB), foi usada para trocar o modo de exibição de GLUT_SINGLE para GLUT_DOUBLE. Isto faz com que todo o rendering seja feito em um offscreen buffer. glutswapbuffers()- é usada no lugar da glflush porque quando é feita a troca (ou swap) de buffers, é realizada implicitamente uma operação de flush. Página 13