Sistemas de Interfaces com o Usuário e Glut/OpenGL

Slides:



Advertisements
Apresentações semelhantes
Funções para serem usadas no exercício de Lab
Advertisements

Um programa em C Bibliotecas Variáveis globais
Linguagem de Programação IV
Funções em C.
Computação Gráfica Mapeamento de textura
Programação II Estruturas de Dados
1. Classes 2. Membros estáticos 1.1. Palavra chave this
OpenGL Clique para adicionar texto Soraia Musse 6/4/2011.
TADS – Tipos Abstratos de Dados
Introdução à Computação Gráfica OpenGL Básico
Computação Gráfica Interativa - Gattass
Navegador de cenas com openGL e rastreamento de raios
OpenGL Conceitos Básicos
Sistemas de Interfaces com o Usuário
Sistemas de Interfaces com o Usuário e OpenGL/Glut
Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) Visualização 3D Incluir no FrameWork Básico (na página da disciplina), as.
Callback de Teclado // registro void glutKeyboardFuc(Teclado);
Laboratório de Computação Gráfica OpenGL
Iluminação Para programar um sistema de iluminação, dois passos principais devem ser considerados: c) Que tipo e posição de Iluminação se deseja b) Que.
OpenGL – Uma abordagem prática e objetiva
Linguagem C Funções.
Vetores, Matrizes e Funções
Slides: Prof. João Fabro UTFPR - Curitiba
Linguagem C.
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Fundamentos de Programação 1
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Computação Gráfica – Transformações Geométricas
Simulação Massa-Mola para Tecidos
Funções Declaração function nomedafunção (arg_1, arg_2,..., arg_n) corpoDaFunção end.
Curso de Nivelamento LCG
PROGRAMAÇÃO ESTRUTURADA II
© 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C (continuação)
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Seminário 1: Revisão de C
Computação Gráfica Mapeamento de textura
Técnicas de Desenvolvimento de Programas
Computação Gráfica Introdução ao OpenGL.
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Introdução à Computação Gráfica OpenGL Básico
Uso de parâmetros na linha de comando. Parâmetros da função main:
Estruturas de Dados Aula 17: Estruturas Genéricas
Introdução à Linguagem C
Estruturas de Dados Aula 7: Tipos Estruturados 23/04/2014.
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Computação Gráfica – Transformações Projetivas
Desenhos Tridimensionais
Estruturas de Dados Aula 6: Cadeias de Caracteres
Computação Gráfica – Transformações Geométricas
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Programação de Computadores I – Arquivos
Aula Prática 3 Funções Monitoria Introdução à Programação.
Viewport.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Felipe Cavalcanti Ferreira Fernando Valente Kakimoto
Sistemas de Interfaces com o Usuário (IUP ou GLUT) e Sistemas Gráficos (OpenGL)
Profa. Maria Augusta Constante Puget
Animação 2D. // Variáveis que guardam a translação que será aplicada // sobre a casinha GLfloat Tx; GLfloat Ty; // Variáveis que guardam os valores mínimos.
Grupo: Antônio Inocêncio Francisco Ícaro Filipe Araújo Guilherme Barreto Leonardo Vilaça Márcio Dias Thiago Gomes.
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Fundamentos de Programação 1 Slides 19 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Binários”.
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.
Estrutura de Dados STRUCTS Dilvan Moreira. Objetivos  Entender o que são e como usar:  Estrutura de Dados para a Linguagem C  Structs (Registros)
Transcrição da apresentação:

Sistemas de Interfaces com o Usuário e Glut/OpenGL Computação Gráfica Interativa - Gattass 3/23/2017 Sistemas de Interfaces com o Usuário e Glut/OpenGL Interfaces Gráficas

Objetos de comuns interface Computação Gráfica Interativa - Gattass 3/23/2017 Objetos de comuns interface Interfaces Gráficas

Computação Gráfica Interativa - Gattass 3/23/2017 Modelo de Programação Toolkit de Interface (GLUT, SDK, ... ) Programa Gráfico- Interativo Sistema Gráfico (OpenGL, Direct3D, ...) Dispositivos Computador Usuário Interfaces Gráficas

Programação Convencional Computação Gráfica Interativa - Gattass 3/23/2017 Programação Convencional inicio Programação Convencional Os comandos são executados segundo uma ordem pré-estabelecida e seqüêncial. captura dados processa dados fim Interfaces Gráficas

Eventos típicos (WIMP) Computação Gráfica Interativa - Gattass 3/23/2017 Eventos típicos (WIMP) KeyPress KeyRelease ButtonPress ButtonRelease Motion LeaveNotify EnterNotify WindowExposure Resize Timer Idle Janela A Janela B Janela C Interfaces Gráficas

Computação Gráfica Interativa - Gattass 3/23/2017 Modelo de Call Backs Processa Evento Tipo 1 Eventos Examina eventos, chama os módulos de processamento Processa Evento Tipo 2 Motif Visual Basic Glut IUP ... Processa Evento Tipo 3 Programa de Aplicação Interfaces Gráficas

Computação Gráfica Interativa - Gattass 3/23/2017 Visual Basic Interfaces Gráficas

Ponteiro para Função em C Na linguagem C você pode criar e manipular ponteiros para funções. Isso permite escolher qual função a ser usada em tempo de execução. O ponteiro para uma função pode ser passado como parâmetro para outra função.

Exemplo 1 de Function Pointer int func1(int arg) { return(2 * arg); } int func2(int arg) return(10 * arg); void func3(int (*func_ptr)(int)) int i = 10, j; j = func_ptr(i); printf("\n%d",j); void main(void) { func3(func1); func3(func2); }

Exemplo 2 (QuickSort) void qsort (void* base, int nel, int width, int (*CPtr)(void*, void*)); Para comparar caracteres, deve ser criada uma função de comparação: int CmpChar ( char* a, char* b) { if ( *a == *b ) return 0; else return ( *a > *b ? 1 : -1 ); } int (*CmpPtr)(); // declare a function pointer CmpPtr = CmpChar; // initialize it qsort ( buffer, 32, sizeof(char), CmpPtr );

Exemplo 3 (CallBack IUP) typedef int (*Icallback)(Ihandle *, ...); Icallback IupSetFunction (char *ação, Icallback função) ; static int iup_CbFechaTodos( void ); static int iup_CbAbreTodos( void ); static int iup_CbMousePress (Ihandle* self,int botao,int estado,int x,int y,char* r); static int iup_CbMouseMove(Ihandle *self, int x, int y, char*r); static int iup_CbMouseEnter (Ihandle *self); IupSetFunction("cb_FechaTodos", (Icallback) iup_CbFechaTodos); IupSetFunction("cb_AbreTodos", (Icallback) iup_CbAbreTodos); IupSetFunction("cb_MousePress", (Icallback) iup_CbMousePress); IupSetFunction("cb_MouseMove", (Icallback) iup_CbMouseMove); IupSetFunction("cb_MouseEnter", (Icallback) iup_CbMouseEnter);

OpenGL/GLUT #include <glut.h> #include <image.h> /* Variaveis globais */ typedef struct window_impl { int width; int height;} Window; Window window; IMAGE pic; int main(int argc, char **argv) { pic = imgReadBMP(filename); imgGetDimensions(pic, &window.width, &window.height); /* GLUT - Initialization */ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(window.width, window.height); glutCreateWindow("CG2001-T1"); /* Registrando callbacks */ glutDisplayFunc(displayCall); glutReshapeFunc(reshapeCall); glutMouseFunc(mouseCall); glutMotionFunc(motionCall); glutKeyboardFunc(keyboardCall); glutIdleFunc(idleCall); /* GLUT main loop */ glutMainLoop(); return 0; }

Exemplo simples da GLUT void displayCall(void) { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); imgDraw(pic); glFlush(); glutSwapBuffers(); } void reshapeCall(int width, int height) { glViewport(0, 0, (GLsizei)width, (GLsizei)height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D (0.0, (GLsizei)width, 0.0, (GLsizei)height); glMatrixMode(GL_MODELVIEW); window.width = width; window.height = height; }