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

             Aula – Introdução à OpenGL

                    Herbet Ferreira
                    herbet@di.ufpb.br


08/04/2010                                1
Introdução à OpenGL
• Open Graphic Library (http://www.opengl.org)

• Biblioteca de rotinas gráficas de modelagens 2D e 3D, extremamente
  portável e rápida;

• Introduzida em 1992 pela Silicon Graphics;
      – Conceber API gráfica independente do dispositivo de exibição


• Gerenciado por um consórcio formado pelas principais empresas da área:
      – 3Dlabs, Apple, Nvidia, SGI e SUN;
      – Frequentes revisões proporcionam a incorporação das mais recentes técnicas
        e da evoluação do hardware;


• Todas as rotinas são implementadas em C/C++
08/04/2010                                                                           2
Características
• Recursos gráficos:
      – Desenhos de primitivas:
              • Pontos, Linhas e Polígonos;
      –      Iluminação;
      –      Sombreamento;
      –      Mapeamento de Texturas;
      –      Transparência;

• Implementações de OpenGL:
      – opengl32.dll (Microsoft)
      – opengl.dll (SGI)
      – mesa3d (GNU)

08/04/2010                                    3
Restrições
• As funcionalidades fornecidas pela OpenGL são de baixo nível;

• Não fornecem funcionalidades e gerenciamento de janelas e
  tratamento de eventos.

• Solução:
      – Extensão da OpenGL através de novas bibliotecas
      – GLU (OpenGL Utility Library)
             • Manipulação de matrizes;
             • Orientação da visualização;
             • Geração de superfícies quadráticas;
      – GLUT (OpenGL Utility Toolkit)
             • Criação de janelas e menus
             • Gerenciamento de janelas e interações do usuário



08/04/2010                                                        4
Programa Básico em OpenGL
#include <GL/glut.h>                           // headers


void Desenha (void) {                          // rotinas
 ...
}


int main(int argc, char **argv)
{
    glutInit(&argc,argv);                          // inicia a GLUT
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);   // define o modo de exibição
    glutInitWindowSize(400,350);                   // tamanho da janela gráfica
    glutInitWindowPosition(10,10);                 // define posição da janela
    glutCreateWindow (“Quadrado");                 // cria a janela gráfica
    glutDisplayFunc(Desenha);                      // apresentação da cena
    Inicializa();                                  // definir estado inicial da opengl
    glutMainLoop();                                // inicia o laço gráfico
}

08/04/2010                                                                               5
Cabeçalhos
#include <GL/glut.h>


• Já inclui automaticamente os headers da
  OpenGL:
      – #include <GL/gl.h>
      – #include <GL/glu.h>


• Se a GLUT não for usada, os cabeçalhos da
  OpenGL tem que ser incluídos explicitamente.

08/04/2010                                       6
Estrutura do Main
• Inicialização da glut:
      glutInit(&argc, argv);


• Informar o modo do display a ser utilizado:
      glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);


      – GLUT_SINGLE
             • janela com buffer simples (todos os desenhos serão feitos
               nessa janela)
      – GLUT_RGB
             • sistema de cor utilizado será o RGB

08/04/2010                                                                 7
Estrutura do Main
• Definir tamanho, posição inicial e nome da
  janela criada:
      glutInitWindowSize (400, 350);
      glutInitWindowPosition (10, 10);
      glutCreateWindow (“Nome da Janela");

• Definir estado inicial do OpenGL:
      Inicializa();

      void Inicializa(void)
      {
           glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // cor de fundo da tela
           glMatrixMode(GL_PROJECTION);    // seleciona matriz de projeção
           glLoadIdentity();               // lê a matriz de identidade
           gluOrtho2D(0.0, 250.0, 0.0, 250.0); // projeção paralela
      }
08/04/2010                                                                   8
Registrando Callbacks
• Callbacks são rotinas que serão chamadas
  para tratar eventos;

• Para uma rotina callback ser efetivamente
  chamada, ela precisar ser registrada através
  da função:
      glutXXFunc (callback);
      – Onde XX designa uma classe de eventos;
      – callback é o nome da rotina;

08/04/2010                                       9
Callback de desenho
• É a rotina chamada sempre que a janela
  precisa ser redesenhada;
    glutDisplayFunc(Desenha);
             void Desenha (void)
             {
                glClear(GL_COLOR_BUFFER_BIT);   // limpa buffers
                glColor3f(1.0f, 0.0f, 0.0f);    // cor vermelha

                 glBegin(GL_QUADS);             // inicio do desenho
                   glVertex2i(100,150);
                   glVertex2i(100,100);
                   glVertex2i(150,100);
                   glVertex2i(150,150);
                   glEnd();                     // fim do desenho

                 glFlush();   // exibe o desenho na tela
             }
08/04/2010                                                             10
Resultado do Exemplo




08/04/2010                          11
Primitivas de Desenho
• Parâmetros de glBegin():
      – GL_POINTS: cada vértice como simples ponto
      – GL_LINES: cada par de vértices forma uma reta
      – GL_LINE_STRIP: traça um grupo de segmentos do
             primeiro ao último vértice
      –      GL_LINE_LOOP: traça um grupo de segmentos do primeiro
             ao último vértice, e retorna ao primeiro
      –      GL_TRIANGLES: cada trio de vértices como sendo os
             vértices de um triângulo
      –      GL_QUADS: cada grupo de 04 vértices como sendo os
             vértices de um quadrilátero
      –      GL_POLYGON: grupo de vértices como sendo os vértices de
             um polígono

08/04/2010                                                         12
Primitivas de desenho




08/04/2010                           13
Outros Callbacks
glutKeyboardFunc(keyborad);
      – Eventos do teclado

glutSpecialFunc(special);
      – Teclas especiais  Home, End, PageDown, PageUp

glutMouseFunc(mouse);
      – Interação com o muse

glutMotionFunc(motion);
      – Movimentos do mouse

08/04/2010                                               14
Convenções de Nomes
             glVertex3f(x, y);



                        Tipo   de dado
Número de componentes   b –    byte
2 – (x, y)              ub –   unsigned byte
3 – (x, y, z)           s –    short
4 – (x, y, z, w)        us –   unsigned short
                        i –    int
                        ui –   unsigned int
                        f –    float
                        d -    double
08/04/2010                                      15
Exercícios
1. A partir do programa básico, implemente
   outras primitivas de desenho da OpenGL.
2. Implemente os algoritmos de traçado de
   linhas DDA e Bresenham, fazendo a
   comparação do tempo de execução de cada
   um para uma mesma reta.



08/04/2010                                   16

More Related Content

What's hot

Curso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptCurso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptPablo Sanches
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - JavaArthur Emanuel
 
DESENVOLVIMENTO DE APLICAÇÕES WEB
DESENVOLVIMENTO DE APLICAÇÕES WEBDESENVOLVIMENTO DE APLICAÇÕES WEB
DESENVOLVIMENTO DE APLICAÇÕES WEBPatrick Monteiro
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteElectronic Arts / DICE
 
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisFundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisHelder Lopes
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 
What Is A Game Engine
What Is A Game EngineWhat Is A Game Engine
What Is A Game EngineSeth Sivak
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
Desenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLDesenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLRildo (@rildosan) Santos
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaFernando Palma
 
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기Hyunsuk Ahn
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Metodologias de desenvolvimento de jogos e introdução a game design
Metodologias de desenvolvimento de jogos e introdução a game designMetodologias de desenvolvimento de jogos e introdução a game design
Metodologias de desenvolvimento de jogos e introdução a game designCaio Vinicius Marques Teixeira
 
Implements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayImplements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayYEONG-CHEON YOU
 
Introduction to game development
Introduction to game developmentIntroduction to game development
Introduction to game developmentAbdelrahman Ahmed
 
OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android Arvind Devaraj
 

What's hot (20)

Curso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptCurso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScript
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Baiscs of OpenGL
Baiscs of OpenGLBaiscs of OpenGL
Baiscs of OpenGL
 
DESENVOLVIMENTO DE APLICAÇÕES WEB
DESENVOLVIMENTO DE APLICAÇÕES WEBDESENVOLVIMENTO DE APLICAÇÕES WEB
DESENVOLVIMENTO DE APLICAÇÕES WEB
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisFundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
What Is A Game Engine
What Is A Game EngineWhat Is A Game Engine
What Is A Game Engine
 
Html
HtmlHtml
Html
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Programação Web com HTML e CSS
Programação Web com HTML e CSSProgramação Web com HTML e CSS
Programação Web com HTML e CSS
 
Desenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLDesenhando Componentes de Software com UML
Desenhando Componentes de Software com UML
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de Máquina
 
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Metodologias de desenvolvimento de jogos e introdução a game design
Metodologias de desenvolvimento de jogos e introdução a game designMetodologias de desenvolvimento de jogos e introdução a game design
Metodologias de desenvolvimento de jogos e introdução a game design
 
Implements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayImplements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture Array
 
Introduction to game development
Introduction to game developmentIntroduction to game development
Introduction to game development
 
OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android
 

Similar to Introdução à OpenGL

Aplicando o poder de uma GPU no SQL Server
Aplicando o poder de uma GPU noSQL ServerAplicando o poder de uma GPU noSQL Server
Aplicando o poder de uma GPU no SQL Serverpichiliani
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLTony Alexander Hild
 
Qt tchelinux-2010
Qt tchelinux-2010Qt tchelinux-2010
Qt tchelinux-2010Wagner Reck
 
Defesa TC V1.2.1
Defesa TC V1.2.1Defesa TC V1.2.1
Defesa TC V1.2.1B Bellaver
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em CDiego Santos
 
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Fernando Passold
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu algLeandro Santos
 
Overview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeOverview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeCleórbete Santos
 
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas Embarcados
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas EmbarcadosWebinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas Embarcados
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas EmbarcadosEmbarcados
 
Apresentação tcd
Apresentação tcdApresentação tcd
Apresentação tcdThata2012
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_onRoberson Alves
 
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSpherePortando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphereEloi Júnior
 
JS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfJS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfAntonioSvio1
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 

Similar to Introdução à OpenGL (20)

Viewport (OpenGL)
Viewport (OpenGL)Viewport (OpenGL)
Viewport (OpenGL)
 
Palestra
PalestraPalestra
Palestra
 
Aplicando o poder de uma GPU no SQL Server
Aplicando o poder de uma GPU noSQL ServerAplicando o poder de uma GPU noSQL Server
Aplicando o poder de uma GPU no SQL Server
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
Qt tchelinux-2010
Qt tchelinux-2010Qt tchelinux-2010
Qt tchelinux-2010
 
Defesa TC V1.2.1
Defesa TC V1.2.1Defesa TC V1.2.1
Defesa TC V1.2.1
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
 
Java ME - Game API
Java ME - Game APIJava ME - Game API
Java ME - Game API
 
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu alg
 
Overview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeOverview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividade
 
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas Embarcados
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas EmbarcadosWebinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas Embarcados
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas Embarcados
 
Apresentação tcd
Apresentação tcdApresentação tcd
Apresentação tcd
 
Visualg2_manual.pdf
Visualg2_manual.pdfVisualg2_manual.pdf
Visualg2_manual.pdf
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_on
 
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSpherePortando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Guia xna
Guia xnaGuia xna
Guia xna
 
JS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfJS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdf
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 

Recently uploaded

As Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAs Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAlexandreFrana33
 
Slides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdfSlides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdfpaulafernandes540558
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaFernanda Ledesma
 
Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfEyshilaKelly1
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileirosMary Alvarenga
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirIedaGoethe
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxconcelhovdragons
 
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...LuizHenriquedeAlmeid6
 
PRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoPRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoSilvaDias3
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...Martin M Flynn
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfAnaGonalves804156
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxacaciocarmo1
 
O guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfO guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfErasmo Portavoz
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfIedaGoethe
 
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESPRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESpatriciasofiacunha18
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024Sandra Pratas
 

Recently uploaded (20)

As Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAs Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptx
 
Slides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdfSlides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdf
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão Linguística
 
Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdf
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimir
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
 
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
 
PRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoPRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basico
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptx
 
O guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfO guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdf
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
 
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESPRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
 

Introdução à OpenGL

  • 1. Introdução à Computação Gráfica Aula – Introdução à OpenGL Herbet Ferreira herbet@di.ufpb.br 08/04/2010 1
  • 2. Introdução à OpenGL • Open Graphic Library (http://www.opengl.org) • Biblioteca de rotinas gráficas de modelagens 2D e 3D, extremamente portável e rápida; • Introduzida em 1992 pela Silicon Graphics; – Conceber API gráfica independente do dispositivo de exibição • Gerenciado por um consórcio formado pelas principais empresas da área: – 3Dlabs, Apple, Nvidia, SGI e SUN; – Frequentes revisões proporcionam a incorporação das mais recentes técnicas e da evoluação do hardware; • Todas as rotinas são implementadas em C/C++ 08/04/2010 2
  • 3. Características • Recursos gráficos: – Desenhos de primitivas: • Pontos, Linhas e Polígonos; – Iluminação; – Sombreamento; – Mapeamento de Texturas; – Transparência; • Implementações de OpenGL: – opengl32.dll (Microsoft) – opengl.dll (SGI) – mesa3d (GNU) 08/04/2010 3
  • 4. Restrições • As funcionalidades fornecidas pela OpenGL são de baixo nível; • Não fornecem funcionalidades e gerenciamento de janelas e tratamento de eventos. • Solução: – Extensão da OpenGL através de novas bibliotecas – GLU (OpenGL Utility Library) • Manipulação de matrizes; • Orientação da visualização; • Geração de superfícies quadráticas; – GLUT (OpenGL Utility Toolkit) • Criação de janelas e menus • Gerenciamento de janelas e interações do usuário 08/04/2010 4
  • 5. Programa Básico em OpenGL #include <GL/glut.h> // headers void Desenha (void) { // rotinas ... } int main(int argc, char **argv) { glutInit(&argc,argv); // inicia a GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // define o modo de exibição glutInitWindowSize(400,350); // tamanho da janela gráfica glutInitWindowPosition(10,10); // define posição da janela glutCreateWindow (“Quadrado"); // cria a janela gráfica glutDisplayFunc(Desenha); // apresentação da cena Inicializa(); // definir estado inicial da opengl glutMainLoop(); // inicia o laço gráfico } 08/04/2010 5
  • 6. Cabeçalhos #include <GL/glut.h> • Já inclui automaticamente os headers da OpenGL: – #include <GL/gl.h> – #include <GL/glu.h> • Se a GLUT não for usada, os cabeçalhos da OpenGL tem que ser incluídos explicitamente. 08/04/2010 6
  • 7. Estrutura do Main • Inicialização da glut: glutInit(&argc, argv); • Informar o modo do display a ser utilizado: glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); – GLUT_SINGLE • janela com buffer simples (todos os desenhos serão feitos nessa janela) – GLUT_RGB • sistema de cor utilizado será o RGB 08/04/2010 7
  • 8. Estrutura do Main • Definir tamanho, posição inicial e nome da janela criada: glutInitWindowSize (400, 350); glutInitWindowPosition (10, 10); glutCreateWindow (“Nome da Janela"); • Definir estado inicial do OpenGL: Inicializa(); void Inicializa(void) { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // cor de fundo da tela glMatrixMode(GL_PROJECTION); // seleciona matriz de projeção glLoadIdentity(); // lê a matriz de identidade gluOrtho2D(0.0, 250.0, 0.0, 250.0); // projeção paralela } 08/04/2010 8
  • 9. Registrando Callbacks • Callbacks são rotinas que serão chamadas para tratar eventos; • Para uma rotina callback ser efetivamente chamada, ela precisar ser registrada através da função: glutXXFunc (callback); – Onde XX designa uma classe de eventos; – callback é o nome da rotina; 08/04/2010 9
  • 10. Callback de desenho • É a rotina chamada sempre que a janela precisa ser redesenhada; glutDisplayFunc(Desenha); void Desenha (void) { glClear(GL_COLOR_BUFFER_BIT); // limpa buffers glColor3f(1.0f, 0.0f, 0.0f); // cor vermelha glBegin(GL_QUADS); // inicio do desenho glVertex2i(100,150); glVertex2i(100,100); glVertex2i(150,100); glVertex2i(150,150); glEnd(); // fim do desenho glFlush(); // exibe o desenho na tela } 08/04/2010 10
  • 12. Primitivas de Desenho • Parâmetros de glBegin(): – GL_POINTS: cada vértice como simples ponto – GL_LINES: cada par de vértices forma uma reta – GL_LINE_STRIP: traça um grupo de segmentos do primeiro ao último vértice – GL_LINE_LOOP: traça um grupo de segmentos do primeiro ao último vértice, e retorna ao primeiro – GL_TRIANGLES: cada trio de vértices como sendo os vértices de um triângulo – GL_QUADS: cada grupo de 04 vértices como sendo os vértices de um quadrilátero – GL_POLYGON: grupo de vértices como sendo os vértices de um polígono 08/04/2010 12
  • 14. Outros Callbacks glutKeyboardFunc(keyborad); – Eventos do teclado glutSpecialFunc(special); – Teclas especiais  Home, End, PageDown, PageUp glutMouseFunc(mouse); – Interação com o muse glutMotionFunc(motion); – Movimentos do mouse 08/04/2010 14
  • 15. Convenções de Nomes glVertex3f(x, y); Tipo de dado Número de componentes b – byte 2 – (x, y) ub – unsigned byte 3 – (x, y, z) s – short 4 – (x, y, z, w) us – unsigned short i – int ui – unsigned int f – float d - double 08/04/2010 15
  • 16. Exercícios 1. A partir do programa básico, implemente outras primitivas de desenho da OpenGL. 2. Implemente os algoritmos de traçado de linhas DDA e Bresenham, fazendo a comparação do tempo de execução de cada um para uma mesma reta. 08/04/2010 16