Fundamentos de Computação Gráfica

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

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

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?

LAB. 1. Introdução à OpenGL

Computação Gráfica OpenGl 01

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

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

Programação Gráfica Cap 2

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

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

OpenGL. O que é OpenGL. O Pipeline do OpenGL. Listas de Exposição

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

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

FCG2006 Prova sobre OpenGL e Rastreamento de Raios

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

Introdução ao OpenGL e à Programação Baseada em Eventos

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

Introdução a Prática em OpenGL

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

Transformações Geométricas

Computação Gráfica II

Computação Gráfica - 04

OpenGL. Alberto B. Raposo

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Taguspark / Alameda. Primeiro Teste 17 de Março de 2012

Computação Gráfica. 5385: Licenciatura em Engenharia Informática. Cap. 3 Janelas e Visores. Janelas e Visores

Sistemas de Interfaces com o Usuário e OpenGL (com IUP ou GLUT)

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

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

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

CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark

INF01046 Fundamentos de Processamento de Imagens Semestre Turma A. Prof. Manuel M. Oliveira

Computação Gráfica. Introdução. Tomás A. C. Badan

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

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

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

INF01046 Fundamentos de Processamento de Imagens. Prof. Manuel M. Oliveira

Sobre o Visual C

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 1o. Semestre de 2017 Prof.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

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

Implementação de uma biblioteca gráfica multiplataforma utilizando OpenGL e GLFW.

- INF Remoção de faces ocultas Aula 21

Computação Gráfica. Prof. André Yoshimi Kusumoto

Pedro Vasconcelos DCC/FCUP. Programação Funcional 11 a Aula Gráficos usando Gloss

Linguagem de Programação III

Introdução a Programação. Tipos Estruturados de Dados

FUNDAMENTOS E APLICAÇÕES. Luis Valente

Aula 28: Arquivos de texto

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved.

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Aula 27: Estruturas heterogêneas e alocação dinâmica

OpenGL. Sumário COMPUTAÇÃO GRÁFICA E INTERFACES. Introdução. Introdução. Carlos Carreto

CRAb Grupo de Computação Gráfica Departamento de Computação UFC

Sistemas Gráficos Interativos. Interações

ORIENTAÇÃO DA MONOGRAFIA: PROF. MARCELO F. PORTO COORDENAÇÃO DA DISCIPLINA: PROF.ª MAGALI MARIA DE ARAÚJO BARROSO

Computação Gráfica - OpenGl 02

PLANIFICAÇÃO

Transcrição:

Fundamentos de Computação Gráfica OpenGL e GLUT António Ramires Fernandes Departamento de Informática - UM 1

Bibliotecas OpenGL (Open Graphics Library) Funcionalidade Gráfica GLU (GL Utilities) Funcionalidade Extra, ao nível gráfico GLUT (GL Utility Toolkit) Construção de aplicações independentes do sistema de janelas (Win, XWin) GLUI (GLUT-Based User Interface) Biblioteca para construção de interfaces gráficas Informática - UM 2

Bibliotecas GLUT http://www.xmission.com/~nate/glut.html Ficheiros: glut.h, glut32.lib, glut32.dll glut.h: colocar na directoria dos includes em GL/ glut32.lib: colocar na directoria das libs glut32.dll: system (win98) ou system32 (Win NT ou XP) GLUI http://www.cs.unc.edu/~rademach/glui/ Ficheiros: glui32.lib (é necessário compilar) Informática - UM 3

Headers necessários Com GLUT #include <GL/glut.h> Sem GLUT #include <GL/glu.h> #include <GL/gl.h> Informática - UM 4

Programação Orientada ao Evento Define-se uma acção para cada evento relevante para a aplicação Exemplos de eventos: Tecla premida Rato movido Janela redimensionada Rato entrou na janela Informática - UM 5

Programação Orientada ao Evento A aplicação é controlada pelo sistema gestor de janelas. É necessário definir um conjunto de funções para processar os eventos e regista-las funções no sistema. Informática - UM 6

Programação em GLUT void main(int argc, char **argv) { inicializar o GLUT e a janela registo de funções para processar eventos (callbacks) } entrar no ciclo de processamento do GLUT Informática - UM 7

Programação em GLUT void main(int argc, char **argv) { // processo de inicialização e definição da janela //Registo de callbacks // entrada no ciclo de processamento do GLUT } glutmainloop(); Informática - UM 8

GLUT - Inicialização glutinit(&argc, argv); Função a invocar para inicializar o GLUT. OS argumentos recebidos são os mesmos que são recebidos na função main. Informática - UM 9

GLUT - Inicialização glutinitdisplaymode(...); Define um conjunto de características do output da janela e do processamento gráfico (mais sobre isto nas aulas teóricas) Por enquanto considerar o parâmetro da função como sendo: GLUT_DEPTH GLUT_DOUBLE GLUT_RGBA Informática - UM 10

GLUT - Inicialização glutinitwindowposition(100,100); Posição do canto superior esquerdo em coordenadas do ecrã. Estes valores são um mero pedido, podendo ser ignorado pelo sistema gestor de janelas. Informática - UM 11

GLUT - Inicialização glutinitwindowsize(320,320); Dimensão da janela (largura,altura) em pixels. Tal como na função anterior, as dimensões fornecidas são um mero pedido. Informática - UM 12

GLUT - Inicialização glutcreatewindow("mcgav@di"); Função que cria a janela. Note-se que a janela só será visível quando for invocado o método: glutmainloop(); Informática - UM 13

Registo de Callbacks glutdisplayfunc(nome_função); A função utilizada deve ser a responsável por desenhar o conteúdo da janela. É obrigatório o registo desta função. A função cujo nome é fornecido tem a seguinte assinatura: void nome_função(void); Informática - UM 14

Registo de Callbacks glutreshapefunc(nome_função); Indicado para registar a função que será responsável por manter as proporções e dimensões do conteúdo da janela em caso de redimensionamento. A função registada também será invocada inicialmente, quando se cria a janela. Assinatura da função registada: void nome_função(int largura, int altura); Informática - UM 15

Registo de Callbacks glutidlefunc(nome_função); A função registada aqui será invocada quando o sistema não estiver a processar outros eventos. Pode-se utilizar para realizar animações. No entanto deve-se minimizar a carga desta função de modo a permitir a interactividade. Assinatura da função registada: void nome_função(void); Informática - UM 16

Ciclo de Processamento do GLUT glutmainloop(); Ao invocar esta função estamos a entrar no ciclo de processamento do GLUT. A partir daqui o controle da aplicação é da responsabilidade do GLUT. O GLUT invocará as funções registadas quando for necessário ou quando estiver à espera de eventos (glutidlefunc). Informática - UM 17

GLUT - Primitivas Geométricas glutsolidsphere(float raio,int fatias,int camadas); glutwiresphere(float raio,int fatias,int camadas); Informática - UM 18

GLUT - Primitivas Geométricas glutsolidcube(float dimensão); glutwirecube(float dimensão); Informática - UM 19

GLUT - Primitivas Geométricas glutsolidcone(float raiobase, float altura, int fatias,int camadas); glutwirecone(float raiobase, float altura, int fatias,int camadas); Informática - UM 20

GLUT - Primitivas Geométricas glutsolidtorus(float raiointerior, float raioexterior, int numlados,int aneis); glutwiretorus(float raiointerior, float raioexterior, int numlados,int aneis); Informática - UM 21

GLUT - Primitivas Geométricas glutsolidicosahedron(void); (20 lados) glutwireicosahedron(void); glutsoliddodecahedron(void); (12 lados) glutwiredodecahedron(void); glutsolidoctahedron(void); (8 lados) glutwireoctahedron(void); glutsolidtetrahedron(void); (6 lados) glutwiretetrahedron(void); Informática - UM 22

GLUT - Primitivas Geométricas glutsolidteapot(float dimensão); glutwireteapot(float dimensão); Informática - UM 23

Exercício prático Completar o esqueleto fornecido para criar uma aplicação em OpenGL + GLUT. Esta aplicação desenhará um pote de chá em modo wireframe com linhas brancas sobre um fundo preto. Alterar de forma contínua a dimensão do pote de chá (utilizando por exemplo a função seno), criando desta forma uma animação básica. Experimentar com as outras primitivas. Informática - UM 24