SlideShare a Scribd company logo
1 of 13
Download to read offline
Introdução à Computação Gráfica

             Aula – Interação com OpenGL

                     Herbet Ferreira
                     herbet@di.ufpb.br


13/05/2010                                 1
Introdução
• Interação
      – Ações do usuário capturadas pelo sistema para
        atualizar a cena gráfica;
• A GLUT contém funções e palavras reservadas
  para gerenciar eventos de Mouse e Teclado;
• A chamada de glutPostRedisplay(); no final
  da função é necessária para forçar o re-
  desenho da cena gráfica;

13/05/2010                                              2
Interação com Teclado
• Comandos do Teclado:
      – glutKeyboardFunc(Key);    // Funções do teclado
      – glutSpecialFunc(Special);   // Teclas especiais

• Key  função que determinará a ação de
  cada tecla (valor alfanumérico)
• Special  função que reconhece teclas
  especiais do teclado (não alfanuméricos)
      – Associado pela GLUT um valor inteiro


13/05/2010                                                3
Interação com Teclado
• void Key(unsigned char key,int x,int y);
      – unsigned char key  valor ASCII da tecla;
      – int x, int y  posição do mouse quando a
             tecla foi pressionada;

• void Special(int key,int x,int y)
      – int key constante que identifica a tecla;
      – int x, int y  posição do mouse quando a
             tecla foi pressionada;

13/05/2010                                           4
Interação com Teclado Special
•   GLUT_KEY_DOWN
•   GLUT_KEY_UP
•   GLUT_KEY_LEFT
•   GLUT_KEY_RIGHT
•   GLUT_KEY_PAGE_UP
•   GLUT_KEY_PAGE_DOWN
•   GLUT_KEY_HOME
•   GLUT_KEY_END
•   GLUT_KEY_INSERT
•   GLUT_KEY_F1 ... GLUT_KEY_F12

13/05/2010                              5
Aplicação Básica
• Tamanho da Tela: 500 x 500
• Inicialização
      – Fundo Preto
      – Projeção Perspectiva
             •   Angle = 300
             •   Aspect = 1
             •   Near = 0.5
             •   Far = 400
• Display
      – Translação  Z = -10
      – glutSolidCube(1);  Cor Verde
      – glutSolidCube(1);  Cor Vermelho

13/05/2010                                  6
Exercício
1. Construa um programa em OpenGL+glut que
   faça interação com o teclado usando a
   função de callback do teclado. Crie
   interações para rotação com as teclas z, c, x e
   s e translação com teclas especiais do tipo
   GLUT_KEY_LEFT, GLUT_KEY_RIGHT,
   GLUT_KEY_UP e GLUT_KEY_DOWN.



13/05/2010                                       7
Interação com Mouse
• Comandos do Mouse:
      – void Motion(int x, int y);
      – void Mouse(int button, int state, int x,
        int y);
• Motion  possível identificar a posição do
  mouse no plano xy
• Mouse  verifica qual botão do dispositivo
  foi pressionado e em que posição do plano xy

13/05/2010                                       8
Interação com Mouse
• void Motion(int x, int y)
      – int x, int y  Posição do mouse no plano xy

• void Mouse(int button, int state, int x,
  int y)
   – int button  GLUT_LEFT_BUTTON,
        GLUT_MIDDLE_BUTTON e GLUT_RIGHT_BUTTON
      – int state  GLUT_UP ou GLUT_DOWN
      – int x, int y  posição do mouse no
        momento que ocorreu o evento;

13/05/2010                                            9
Exercício
1. Construa um programa em OpenGL+glut que
   faça interação com o mouse usando a função
   de callback do mouse. Crie interações para
   Zoom-in e Zoom-out com o botão esquerdo
   do mouse e botão direito.




13/05/2010                                  10
Z-buffer
• Utilizado para calcular a distância do observador
  e remover superfícies ou partes ocultas de
  objetos sobrepostos;
• Manter para cada pixel um valor de
  profundidade;
• Não esquecer de alocar o z-buffer
      – glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);

• Ao gerar um novo quadro, limpar também o z-
  buffer:
      – glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);


13/05/2010                                                  11
Z-buffer
• Habilitar o Z-buffer:
      – glEnable(GL_DEPTH_TEST);

• Antes da composição da cena, desenhar no buffer de
  segundo plano;
      – glDrawBuffer(GL_BACK);

• Após a completa composição da cena, descarrega-se o
  conteúdo do buffer de segundo plano no primeiro com
  a função;
      – glutSwapBuffers();


13/05/2010                                             12
Exercício
1. Construa um programa em OpenGL+glut que
   ative o z-buffer na visualização de dois cubos.
     – Utilizar os exercícios anteriores com interação do
       mouse e teclado.
2. Entregar todo o exercício na próxima aula;
     – Código
             •   Interação Teclado e Mouse
             •   Z-Buffer
     – Printscreens
13/05/2010                                              13

More Related Content

What's hot

openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIopenFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
Atsushi Tadokoro
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
 

What's hot (20)

QGIS 3.0 새 기능 둘러보기
QGIS 3.0 새 기능 둘러보기QGIS 3.0 새 기능 둘러보기
QGIS 3.0 새 기능 둘러보기
 
【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap
 
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
 
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIopenFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
 
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
 
Tout savoir sur les SIG mobiles
Tout savoir sur les SIG mobilesTout savoir sur les SIG mobiles
Tout savoir sur les SIG mobiles
 
UniRxことはじめ
UniRxことはじめUniRxことはじめ
UniRxことはじめ
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
 
Flutter talkshow
Flutter talkshowFlutter talkshow
Flutter talkshow
 
【Unity道場 自動車編】HMIにおけるUnity活用事例
【Unity道場 自動車編】HMIにおけるUnity活用事例【Unity道場 自動車編】HMIにおけるUnity活用事例
【Unity道場 自動車編】HMIにおけるUnity活用事例
 
Data Driven Game Design
Data Driven Game DesignData Driven Game Design
Data Driven Game Design
 
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン ProBuilderをマスターしよう!
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン ProBuilderをマスターしよう!【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン ProBuilderをマスターしよう!
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン ProBuilderをマスターしよう!
 
【Unite 2017 Tokyo】Unityを使ったNintendo Switch™ローンチタイトル制作~スーパーボンバーマンRの事例~
【Unite 2017 Tokyo】Unityを使ったNintendo Switch™ローンチタイトル制作~スーパーボンバーマンRの事例~【Unite 2017 Tokyo】Unityを使ったNintendo Switch™ローンチタイトル制作~スーパーボンバーマンRの事例~
【Unite 2017 Tokyo】Unityを使ったNintendo Switch™ローンチタイトル制作~スーパーボンバーマンRの事例~
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
GAN을 이용한 캐릭터 리소스 제작 맛보기
GAN을 이용한 캐릭터 리소스 제작 맛보기GAN을 이용한 캐릭터 리소스 제작 맛보기
GAN을 이용한 캐릭터 리소스 제작 맛보기
 
SIG ET ANALYSE SPATIALE, SESSION 2
SIG ET ANALYSE SPATIALE, SESSION 2SIG ET ANALYSE SPATIALE, SESSION 2
SIG ET ANALYSE SPATIALE, SESSION 2
 
Game Design para quem não é Game Designer
Game Design para quem não é Game DesignerGame Design para quem não é Game Designer
Game Design para quem não é Game Designer
 
Live2Dの描画の裏側の話
Live2Dの描画の裏側の話Live2Dの描画の裏側の話
Live2Dの描画の裏側の話
 

Viewers also liked

Apresentação Otimize Marketing Digital
Apresentação Otimize Marketing DigitalApresentação Otimize Marketing Digital
Apresentação Otimize Marketing Digital
Flávio Aquino Sabugo
 
Palestra XXI CONAD - Google e as Novas Formas de Publicidade para o Novo [e-C...
Palestra XXI CONAD - Google e as Novas Formas de Publicidade para o Novo [e-C...Palestra XXI CONAD - Google e as Novas Formas de Publicidade para o Novo [e-C...
Palestra XXI CONAD - Google e as Novas Formas de Publicidade para o Novo [e-C...
Flávio Aquino Sabugo
 

Viewers also liked (20)

Desenvolvimento de jogos e ogre 3D - Unisantos
Desenvolvimento de jogos e ogre 3D - UnisantosDesenvolvimento de jogos e ogre 3D - Unisantos
Desenvolvimento de jogos e ogre 3D - Unisantos
 
Curso HTML e CSS Part2
Curso HTML e CSS Part2Curso HTML e CSS Part2
Curso HTML e CSS Part2
 
Oportunidades de Marketing para o Setor de Educação
Oportunidades de Marketing para o Setor de EducaçãoOportunidades de Marketing para o Setor de Educação
Oportunidades de Marketing para o Setor de Educação
 
Apostila HTML
Apostila HTMLApostila HTML
Apostila HTML
 
Mysql
MysqlMysql
Mysql
 
UOL HOST: diplomacia por uma boa experiência
UOL HOST: diplomacia por uma boa experiênciaUOL HOST: diplomacia por uma boa experiência
UOL HOST: diplomacia por uma boa experiência
 
E-mail marketing e promoções: Tudo o que está faltando para você fazer dar ce...
E-mail marketing e promoções: Tudo o que está faltando para você fazer dar ce...E-mail marketing e promoções: Tudo o que está faltando para você fazer dar ce...
E-mail marketing e promoções: Tudo o que está faltando para você fazer dar ce...
 
Curso HTML e CSS Part1
Curso HTML e CSS Part1Curso HTML e CSS Part1
Curso HTML e CSS Part1
 
Apoio1020 apostila html
Apoio1020 apostila htmlApoio1020 apostila html
Apoio1020 apostila html
 
Quem Não é Encontrado Não Existe 2.0 - Carlos Henrique Muller
Quem Não é Encontrado Não Existe 2.0 - Carlos Henrique MullerQuem Não é Encontrado Não Existe 2.0 - Carlos Henrique Muller
Quem Não é Encontrado Não Existe 2.0 - Carlos Henrique Muller
 
Manual completo de_html 01
Manual completo de_html 01Manual completo de_html 01
Manual completo de_html 01
 
GingaHero
GingaHeroGingaHero
GingaHero
 
Viewport (OpenGL)
Viewport (OpenGL)Viewport (OpenGL)
Viewport (OpenGL)
 
Cores
CoresCores
Cores
 
Apresentação Otimize Marketing Digital
Apresentação Otimize Marketing DigitalApresentação Otimize Marketing Digital
Apresentação Otimize Marketing Digital
 
Deda notes meditation
Deda notes   meditationDeda notes   meditation
Deda notes meditation
 
Teclado
TecladoTeclado
Teclado
 
Jucelma
JucelmaJucelma
Jucelma
 
Palestra XXI CONAD - Google e as Novas Formas de Publicidade para o Novo [e-C...
Palestra XXI CONAD - Google e as Novas Formas de Publicidade para o Novo [e-C...Palestra XXI CONAD - Google e as Novas Formas de Publicidade para o Novo [e-C...
Palestra XXI CONAD - Google e as Novas Formas de Publicidade para o Novo [e-C...
 
Apresentação Guia-se | AdWords
Apresentação Guia-se | AdWordsApresentação Guia-se | AdWords
Apresentação Guia-se | AdWords
 

Similar to Interação (OpenGL) (12)

Java ME - Game API
Java ME - Game APIJava ME - Game API
Java ME - Game API
 
02 introdução ao open gl
02 introdução ao open gl02 introdução ao open gl
02 introdução ao open gl
 
Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.
 
Games development
Games developmentGames development
Games development
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developers
 
Aula3 input
Aula3   inputAula3   input
Aula3 input
 
Aula1 intro
Aula1  introAula1  intro
Aula1 intro
 
Aula menus
Aula menusAula menus
Aula menus
 
Como criar o seu próprio joystick!
Como criar o seu próprio joystick!Como criar o seu próprio joystick!
Como criar o seu próprio joystick!
 
Interfaces acesso
Interfaces acessoInterfaces acesso
Interfaces acesso
 
Aprendendo a Construir jogos com o Construct 2
Aprendendo a Construir jogos com o Construct 2 Aprendendo a Construir jogos com o Construct 2
Aprendendo a Construir jogos com o Construct 2
 
Júlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersJúlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game Developers
 

Recently uploaded

A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
sh5kpmr7w7
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 

Recently uploaded (20)

LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 

Interação (OpenGL)

  • 1. Introdução à Computação Gráfica Aula – Interação com OpenGL Herbet Ferreira herbet@di.ufpb.br 13/05/2010 1
  • 2. Introdução • Interação – Ações do usuário capturadas pelo sistema para atualizar a cena gráfica; • A GLUT contém funções e palavras reservadas para gerenciar eventos de Mouse e Teclado; • A chamada de glutPostRedisplay(); no final da função é necessária para forçar o re- desenho da cena gráfica; 13/05/2010 2
  • 3. Interação com Teclado • Comandos do Teclado: – glutKeyboardFunc(Key); // Funções do teclado – glutSpecialFunc(Special); // Teclas especiais • Key  função que determinará a ação de cada tecla (valor alfanumérico) • Special  função que reconhece teclas especiais do teclado (não alfanuméricos) – Associado pela GLUT um valor inteiro 13/05/2010 3
  • 4. Interação com Teclado • void Key(unsigned char key,int x,int y); – unsigned char key  valor ASCII da tecla; – int x, int y  posição do mouse quando a tecla foi pressionada; • void Special(int key,int x,int y) – int key constante que identifica a tecla; – int x, int y  posição do mouse quando a tecla foi pressionada; 13/05/2010 4
  • 5. Interação com Teclado Special • GLUT_KEY_DOWN • GLUT_KEY_UP • GLUT_KEY_LEFT • GLUT_KEY_RIGHT • GLUT_KEY_PAGE_UP • GLUT_KEY_PAGE_DOWN • GLUT_KEY_HOME • GLUT_KEY_END • GLUT_KEY_INSERT • GLUT_KEY_F1 ... GLUT_KEY_F12 13/05/2010 5
  • 6. Aplicação Básica • Tamanho da Tela: 500 x 500 • Inicialização – Fundo Preto – Projeção Perspectiva • Angle = 300 • Aspect = 1 • Near = 0.5 • Far = 400 • Display – Translação  Z = -10 – glutSolidCube(1);  Cor Verde – glutSolidCube(1);  Cor Vermelho 13/05/2010 6
  • 7. Exercício 1. Construa um programa em OpenGL+glut que faça interação com o teclado usando a função de callback do teclado. Crie interações para rotação com as teclas z, c, x e s e translação com teclas especiais do tipo GLUT_KEY_LEFT, GLUT_KEY_RIGHT, GLUT_KEY_UP e GLUT_KEY_DOWN. 13/05/2010 7
  • 8. Interação com Mouse • Comandos do Mouse: – void Motion(int x, int y); – void Mouse(int button, int state, int x, int y); • Motion  possível identificar a posição do mouse no plano xy • Mouse  verifica qual botão do dispositivo foi pressionado e em que posição do plano xy 13/05/2010 8
  • 9. Interação com Mouse • void Motion(int x, int y) – int x, int y  Posição do mouse no plano xy • void Mouse(int button, int state, int x, int y) – int button  GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON e GLUT_RIGHT_BUTTON – int state  GLUT_UP ou GLUT_DOWN – int x, int y  posição do mouse no momento que ocorreu o evento; 13/05/2010 9
  • 10. Exercício 1. Construa um programa em OpenGL+glut que faça interação com o mouse usando a função de callback do mouse. Crie interações para Zoom-in e Zoom-out com o botão esquerdo do mouse e botão direito. 13/05/2010 10
  • 11. Z-buffer • Utilizado para calcular a distância do observador e remover superfícies ou partes ocultas de objetos sobrepostos; • Manter para cada pixel um valor de profundidade; • Não esquecer de alocar o z-buffer – glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH); • Ao gerar um novo quadro, limpar também o z- buffer: – glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 13/05/2010 11
  • 12. Z-buffer • Habilitar o Z-buffer: – glEnable(GL_DEPTH_TEST); • Antes da composição da cena, desenhar no buffer de segundo plano; – glDrawBuffer(GL_BACK); • Após a completa composição da cena, descarrega-se o conteúdo do buffer de segundo plano no primeiro com a função; – glutSwapBuffers(); 13/05/2010 12
  • 13. Exercício 1. Construa um programa em OpenGL+glut que ative o z-buffer na visualização de dois cubos. – Utilizar os exercícios anteriores com interação do mouse e teclado. 2. Entregar todo o exercício na próxima aula; – Código • Interação Teclado e Mouse • Z-Buffer – Printscreens 13/05/2010 13