Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAlexandre Canto Alterado mais de 10 anos atrás
1
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
2
Objetos de comuns interface
Computação Gráfica Interativa - Gattass 3/23/2017 Objetos de comuns interface Interfaces Gráficas
3
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
4
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
5
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
6
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
7
Computação Gráfica Interativa - Gattass
3/23/2017 Visual Basic Interfaces Gráficas
8
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.
9
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); }
10
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 );
11
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);
12
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; }
13
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; }
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.