A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Sistemas de Interfaces com o Usuário e Glut/OpenGL"— Transcrição da apresentação:

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; }


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

Apresentações semelhantes


Anúncios Google