Computa - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

Computa

Description:

Computa o Gr fica - Intera es Profa. Mercedes Gonzales M rquez T picos Sistemas de Informa o Gr fica Dispositivos F sicos Entrada Sa da Sistemas de ... – PowerPoint PPT presentation

Number of Views:97
Avg rating:3.0/5.0
Slides: 27
Provided by: IAS795
Category:
Tags: area | computa | rhombus

less

Transcript and Presenter's Notes

Title: Computa


1
Computação Gráfica - Interações
  • Profa. Mercedes Gonzales Márquez

2
Tópicos
  • Sistemas de Informação Gráfica
  • Dispositivos Físicos
  • Entrada
  • Saída
  • Sistemas de Janelas
  • Programação Orientada a Eventos

3
Conceito
  • Um dos aspectos mais fascinantes dos atuais
    sistemas de informação gráfica é a sua
    interatividade.
  • Os programas tradicionais seguem um fluxo de
    controle pré-estabelecido.
  • Nos sistemas de informação gráfica, o usuário
    pode interferir no controle de fluxo do programa,
    compartilhando com o computador a
    responsabilidade
  • na execução de uma tarefa. como ilustra o ciclo
    de interação.

4
Conceito
  • Através dos dispositivos de saída, o sistema
    computacional exibe para o usuário o estado dos
    dados.
  • O usuário vê/lê a informação apresentada,
    interpreta, avalia e intervém no fluxo de
    controle através dos dispositivos de entrada.
  • Os sinais de dispositivos de entrada são
    processados como eventos pelo processador que
    dispara um tratador apropriado para modificar o
    estado dos dados armazenados em memória.

5
Conceito
6
Sistemas de Janelas
  • É uma camada de software que gerencia o uso
    compartilhado dos dispositivos de entrada e de
    saída entre vários aplicativos, de forma similar
    a um sistema operacional que gerencia os recursos
    computacionais entre vários processos.
  • Cada aplicativo tem uma sub-área própria, como se
    a tela do monitor estivesse dividida em várias
    sub-áreas totalmente independentes. Estas
    sub-áreas são as janelas.

7
Sistemas de Janelas
8
Sistemas de Janelas
  • Um ciclo de interação envolve o disparo de um
    evento de interação, o despacho deste evento à
    janela correta e a execução de um trecho de
    código condizente com a ação esperada (tratador
    de eventos registrados como callbacks)

9
Programa orientado a eventos
  • Possui sempre um programa inicial contendo
    instruções de inicialização e um laço principal
    de eventos cuja tarefa é simplesmente retirar os
    eventos da fila e despachá-los.
  • As funções de inicialização são as instruções
    comuns a todos os aplicativos.
  • O comportamento real de um aplicativo é definido
    pelos tratadores de evento registrados com
    callback.

10
Funções Callback GLUT
  • GLUT usa o mecanismo de Callbacks.
  • São rotinas que são chamadas quando algo como o
    seguinte acontece (evento)
  • Redimensionamento ou redesenho da janela
  • Entrada do usuário (mouse, teclado, etc).
  • Callbacks definem quais ações são suportadas e
    automaticamente manejam os eventos.
  • Registro de callbacks com GLUT
  • glutDisplayFunc( display )
  • glutIdleFunc( idle )
  • glutKeyboardFunc( keyboard )

10
11
Funções Callback GLUT
  • Outras
  • glutReshapeFunc() chamada quando a janela muda
    de tamanho
  • glutKeyboardFunc() chamada quando uma tecla é
    pressionada no teclado
  • glutMouseFunc() chamada quando o usuário
    pressiona um botão do mouse
  • glutMotionFunc() chamada quando o usuário
    movimenta o mouse enquanto um botão do mesmo está
    pressionado.
  • glutPassiveMouseFunc() chamada quando o mouse é
    movimentado sem considerar o estado dos botões.
  • glutIdleFunc() chamada quando nada está sendo
    realizado. É muito útil para animações.

11
12
Callback de renderização (display)
  • O desenho que será apresentado na tela é feito
    aqui.
  • glutDisplayFunc( display )
  • void display( void )
  • glClear( GL_COLOR_BUFFER_BIT )
  • glBegin( GL_TRIANGLE_STRIP )
  • glVertex3fv( v0 )
  • glVertex3fv( v1 )
  • glVertex3fv( v2 )
  • glVertex3fv( v3 )
  • glEnd()
  • glutSwapBuffers()

12
13
Callback idle (ocioso)
  • Usado para animação e atualização contínua
  • glutIdleFunc( idle )
  • void idle( void )
  • t dt
  • glutPostRedisplay()

13
14
Callbacks de entradas
  • Processa uma entrada do usuário, pode ser por
    teclado, mouse.
  • glutKeyboardFunc( keyboard )
  • void keyboard( char key, int x, int y )
  • switch( key )
  • case q case Q
  • exit( EXIT_SUCCESS )
  • break
  • case r case R
  • rotate GL_TRUE
  • break

14
15
OpenGL
  • OpenGL é uma biblioteca de rotinas gráficas para
    criar aplicações interativas que renderizam
    imagens de alta qualidade compostas de objetos
    tridimensionais e imagens..
  • OpenGL é independente do sistema operacional e do
    sistema de janelas.

16
OpenGL como renderizador
  • Basicamente, há duas operações que OpenGL faz
  • Desenhar algo através de primitivas geométricas e
    de imagens.
  • Mudar o estado de como OpenGL desenha.
  • Primitivas Geometricas
  • Pontos, linhas e polígonos
  • Primitivas de Imagens
  • imagens e bitmaps (os pixels que podemos extrair
    de uma imagem JPEG depois de lida)
  • Adicionalmente, OpenGL pode linkar imagens e
    primitavas geométricas através de um mapeamento
    de textura.
  • OpenGL funciona como uma máquina de estados. A
    renderização depende do estado
  • cores, materiais, fontes de luz, etc.

16
17
GLU e GLUT
  • GLU (OpenGL Utility Library)
  • parte de OpenGL
  • Simplifica tarefas como renderização de
    superfícies quádricas como esferas, cones,
    cilindros, etc.
  • GLUT (OpenGL Utility Toolkit)
  • Permite interagir com o sistemas de janelas.
    Simplifica o processo de criar janelas, trabalhar
    com eventos no sistema de janelas e manejar
    animações.
  • Não é oficialmente parte de OpenGL

17
18
Preliminares
  • Arquivos cabeçalho (headers files) descreve
    para o compilador, as chamadas de funções, seus
    parâmetros e valores constantes definidos.
  • include ltGL/gl.hgt
  • include ltGL/glu.hgt
  • include ltGL/glut.hgt
  • Bibliotecas depende do sistema que estamos
    usando. Cada sistema operacional tem seu próprio
    conjunto de bibliotecas. Para sistema Unix é
    libGL.so e para Microsoft Windows é
    opengl32.lib.
  • Enumerated Types
  • GLfloat, GLint, etc.

18
19
GLUT Básico
  • Estrutura da aplicação
  • Configure e inicialize a janela
  • Inicialize os estados do OpenGL. Isto pode
    incluir coisas como cor do fundo, posições de luz
    e mapas de textura.
  • Registre funções callbacks
  • Entre no loop de processamento de eventos
    Quando a aplicação recebe eventos, e controla
    quando as funções callbacks serão chamadas.

19
20
Programa exemplo
  • void main( int argc, char argv )
  • int mode GLUT_RGBGLUT_DOUBLE
  • glutInitDisplayMode( mode )
  • glutCreateWindow( argv0 )
  • init()
  • glutDisplayFunc( display )
  • glutReshapeFunc( resize )
  • glutKeyboardFunc( key )
  • glutIdleFunc( idle )
  • glutMainLoop()

Funções de configuração da janela
Inicalização de estados
Rotinas Callbak
Loop de processamento de eventos
20
21
Inicialização de OpenGL
  • Fixa alguns estados
  • void init( void )
  • glClearColor( 0.0, 0.0, 0.0, 1.0 )
  • glClearDepth( 1.0 )
  • glEnable( GL_LIGHT0 )
  • glEnable( GL_LIGHTING )
  • glEnable( GL_DEPTH_TEST )

21
22
Primitivas geométricas do OpenGL
  • Todas as primitivas geométricas são especificadas
    por vértices

22
23
Exemplo
  • void drawRhombus( GLfloat color )
  • glBegin( GL_QUADS )
  • glColor3fv( color )
  • glVertex2f( 0.0, 0.0 )
  • glVertex2f( 1.0, 0.0 )
  • glVertex2f( 1.5, 1.118 )
  • glVertex2f( 0.5, 1.118 )
  • glEnd()

23
24
Formatos de comandos OpenGL
glVertex3fv( v )
Number of components
Data Type
Vector
24
25
Especificando Primitivas Geométricas
  • Primitivas são especificadas usando
  • glBegin( primType )
  • glEnd()
  • primType determina como os vértices serão
    combinados.

25
26
Tutorial Shapes
26
Write a Comment
User Comments (0)
About PowerShow.com