bcc327 - computação gráfica - 05 - introdução ao opengl ...€¦ · 05 - introdução ao...

23
BCC327 - Computação Gráfica 05 - Introdução ao OpenGL - Aula Prática Rodolfo Ayala Lopes Costa Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 4 de Abril de 2018 Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 1 / 18

Upload: others

Post on 20-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

BCC327 - Computação Gráfica05 - Introdução ao OpenGL - Aula Prática

Rodolfo Ayala Lopes Costa

Departamento de ComputaçãoInstituto de Ciências Exatas e Biológicas

Universidade Federal de Ouro Preto

4 de Abril de 2018

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 1 / 18

Page 2: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Cronograma da Aula

Introdução ao OpenGL

Primeiro ProgramaExemplo: Gráfico de DispersãoExemplo: Variação de Cores dos ObjetosExemplo: CasaExercícios Propostos

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 2 / 18

Page 3: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Cronograma da Aula

Introdução ao OpenGL

Primeiro Programa

Exemplo: Gráfico de DispersãoExemplo: Variação de Cores dos ObjetosExemplo: CasaExercícios Propostos

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 2 / 18

Page 4: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Cronograma da Aula

Introdução ao OpenGL

Primeiro ProgramaExemplo: Gráfico de Dispersão

Exemplo: Variação de Cores dos ObjetosExemplo: CasaExercícios Propostos

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 2 / 18

Page 5: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Cronograma da Aula

Introdução ao OpenGL

Primeiro ProgramaExemplo: Gráfico de DispersãoExemplo: Variação de Cores dos Objetos

Exemplo: CasaExercícios Propostos

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 2 / 18

Page 6: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Cronograma da Aula

Introdução ao OpenGL

Primeiro ProgramaExemplo: Gráfico de DispersãoExemplo: Variação de Cores dos ObjetosExemplo: Casa

Exercícios Propostos

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 2 / 18

Page 7: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Cronograma da Aula

Introdução ao OpenGL

Primeiro ProgramaExemplo: Gráfico de DispersãoExemplo: Variação de Cores dos ObjetosExemplo: CasaExercícios Propostos

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 2 / 18

Page 8: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Primeiro Programa usando OpenGL

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 3 / 18

Page 9: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Primeiro Programa com OpenGL

Código:

#i n c l u d e <GL/ g l u t . h>

i n t main ( i n t argc , cha r∗∗ a rgv ){// I n i c i a l i z a c a o da Telag l u t I n i t (&argc , a rgv ) ;// De f i n i c a o do formato de co rg l u t I n i tD i s p l a yMod e (GLUT_SINGLE | GLUT_RGB) ;// De f i n e o tamanho da j a n e l ag l u t I n i tW indowS i z e ( 640 , 640 ) ;// De f i n e a po s i c a o da j a n e l ag l u t I n i tW i n dowPo s i t i o n (100 , 100 ) ;// C r i a cao da j a n e l a e c o n f i g u r a c a o do t i t u l og lutCreateWindow ( " P r ime i r o ␣Programa" ) ;// R e a l i z a as c o n f i g u r a c o e s i n i c i a i si n i t ( ) ;// De f i n i c a o da funcao de c a l l b a c kg l u tD i s p l a yFun c ( d i s p l a y ) ;

// De f i n e um loop e t e r nog lutMainLoop ( ) ;r e t u r n 0 ;

}

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 4 / 18

Page 10: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Primeiro Programa com OpenGL

Código (Cont...):

vo i d i n i t ( v o i d ){

/∗ d e f i n e a co r de background da j a n e l a ∗/g l C l e a r C o l o r ( 1 . 0 , 1 . 0 , 1 . 0 , 0 . 0 ) ;

/∗ d e f i n e o s i s t ema de v i s u a l i z a c a o − t i p o de p r o j e c a o ∗/glMatr ixMode (GL_PROJECTION) ;g l L o a d I d e n t i t y ( ) ;g lOr tho ( 0 . 0 , 1 . 0 , 0 . 0 , 1 . 0 , −1.0 , 1 . 0 ) ;

}

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 5 / 18

Page 11: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Primeiro Programa com OpenGL

Código (Cont...):

vo i d d i s p l a y ( vo i d ){

/∗ l impa a j a n e l a ∗/g l C l e a r (GL_COLOR_BUFFER_BIT) ;

/∗ desenha um r e t a n gu l o amare lo ∗/g l C o l o r 3 f ( 1 . 0 , 1 . 0 , 0 . 0 ) ;g lBeg i n (GL_POLYGON) ;

g l V e r t e x 3 f ( 0 . 3 , 0 . 3 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 7 , 0 . 3 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 7 , 0 . 7 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 3 , 0 . 7 , 0 . 0 ) ;

g lEnd ( ) ;

/∗ i n i c i a o proces samento imed ia tamente ∗/g l F l u s h ( ) ;

}

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 6 / 18

Page 12: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Gráfico de Dispersão

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 7 / 18

Page 13: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Gráfico de Dispersão

Código:

#i n c l u d e <GL/ g l u t . h>

i n t main ( i n t argc , cha r∗∗ a rgv ){// I n i c i a l i z a c a o da Telag l u t I n i t (&argc , a rgv ) ;// De f i n i c a o do formato de co rg l u t I n i tD i s p l a yMod e (GLUT_SINGLE | GLUT_RGB) ;// De f i n e o tamanho da j a n e l ag l u t I n i tW indowS i z e ( 640 , 640 ) ;// De f i n e a po s i c a o da j a n e l ag l u t I n i tW i n dowPo s i t i o n (100 , 100 ) ;// C r i a cao da j a n e l a e c o n f i g u r a c a o do t i t u l og lutCreateWindow ( " G r a f i c o ␣de␣ D i s p e r s ao " ) ;// R e a l i z a as c o n f i g u r a c o e s i n i c i a i si n i t ( ) ;// De f i n i c a o da funcao de c a l l b a c kg l u tD i s p l a yFun c ( d i s p l a y ) ;

// De f i n e um loop e t e r nog lutMainLoop ( ) ;r e t u r n 0 ;

}

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 8 / 18

Page 14: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Gráfico de Dispersão

Código (Cont...):

vo i d i n i t ( v o i d ){

/∗ d e f i n e a co r de background da j a n e l a ∗/g l C l e a r C o l o r ( 1 . 0 , 1 . 0 , 1 . 0 , 0 . 0 ) ;

/∗ d e f i n e o s i s t ema de v i s u a l i z a c a o − t i p o de p r o j e c a o ∗/glMatr ixMode (GL_PROJECTION) ;g l L o a d I d e n t i t y ( ) ;g lOr tho ( 0 . 0 , 1 . 0 , 0 . 0 , 1 . 0 , −1.0 , 1 . 0 ) ;

}

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 9 / 18

Page 15: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Gráfico de Dispersão

Código (Cont...):

vo i d d i s p l a y ( vo i d ){

/∗ l impa a j a n e l a ∗/g l C l e a r (GL_COLOR_BUFFER_BIT) ;

// De f i n e a co r p r e t o para os e i x o s do g r a f i c og l C o l o r 3 f ( 0 . 0 , 0 . 0 , 0 . 0 ) ;

/∗ Desenhando os e i x o s ∗/// d e f i n i n f o a e s p e s s u r a da l i n h ag lL ineWid th ( 2 . 0 ) ;g lBeg i n (GL_LINES ) ;

// d e f i n i n d o a r e t a do e i x o Yg lV e r t e x 3 f ( 0 . 1 , 0 . 1 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 1 , 0 . 9 , 0 . 0 ) ;// d e f i n i n d o a r e t a do e i x o Xg lV e r t e x 3 f ( 0 . 1 , 0 . 1 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 9 , 0 . 1 , 0 . 0 ) ;

g lEnd ( ) ;

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 10 / 18

Page 16: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Gráfico de Dispersão

Código (Cont...):

/∗ Desenhando as pontas dos e i x o s ∗/g lBeg i n (GL_TRIANGLES ) ;

// Tr i angu l o do e i x o Yg lV e r t e x 3 f ( 0 . 0 8 , 0 . 90 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 1 2 , 0 . 90 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 1 , 0 . 92 , 0 . 0 ) ;// T r i angu l o do e i x o Xg lV e r t e x 3 f ( 0 . 9 0 , 0 . 08 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 9 0 , 0 . 12 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 9 2 , 0 . 10 , 0 . 0 ) ;

g lEnd ( ) ;

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 11 / 18

Page 17: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Gráfico de Dispersão

Código (Cont...):

/∗ Desenhando os pontos ( co r : ve rme lha ) ∗/g l C o l o r 3 f ( 1 . 0 , 0 . 0 , 0 . 0 ) ;g l P o i n t S i z e ( 6 . 0 ) ;g lBeg i n (GL_POINTS ) ;

g l V e r t e x 3 f ( 0 . 2 , 0 . 2 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 2 5 , 0 . 3 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 5 , 0 . 15 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 6 , 0 . 4 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 2 2 , 0 . 25 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 7 , 0 . 7 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 8 , 0 . 56 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 3 , 0 . 4 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 5 , 0 . 68 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 6 4 , 0 . 3 , 0 . 0 ) ;

g lEnd ( ) ;

/∗ i n i c i a o proces samento imed ia tamente ∗/g l F l u s h ( ) ;

}

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 12 / 18

Page 18: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Variação de Cores dos Objetos

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 13 / 18

Page 19: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Variação de Cores dos Objetos

Código:

vo i d d i s p l a y ( vo i d ){

/∗ l impa a j a n e l a ∗/g l C l e a r (GL_COLOR_BUFFER_BIT) ;

/∗ desenha um r e t a n gu l o ∗/g lBeg i n (GL_POLYGON) ;

g l C o l o r 3 f ( 1 . 0 , 1 . 0 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 3 , 0 . 3 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 7 , 0 . 3 , 0 . 0 ) ;g l C o l o r 3 f ( 1 . 0 , 0 . 0 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 7 , 0 . 7 , 0 . 0 ) ;g l V e r t e x 3 f ( 0 . 3 , 0 . 7 , 0 . 0 ) ;

g lEnd ( ) ;

/∗ i n i c i a o proces samento imed ia tamente ∗/g l F l u s h ( ) ;

}

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 14 / 18

Page 20: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Casa

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 15 / 18

Page 21: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Casa

Código:

vo i d d i s p l a y ( vo i d ){

/∗ l impa a j a n e l a ∗/g l C l e a r (GL_COLOR_BUFFER_BIT) ;

/∗ desenha a e s t r u t u r a da casa ∗/g l C o l o r 3 f ( 0 . 0 , 0 . 0 , 0 . 0 ) ;g lBeg i n (GL_LINE_LOOP) ;

g l V e r t e x 2 f ( 0 . 1 7 , 0 . 0 7 ) ;g l V e r t e x 2 f ( 0 . 1 7 , 0 . 5 7 ) ;g l V e r t e x 2 f ( 0 . 4 7 , 0 . 8 7 ) ;g l V e r t e x 2 f ( 0 . 7 7 , 0 . 5 7 ) ;g l V e r t e x 2 f ( 0 . 7 7 , 0 . 0 7 ) ;

g lEnd ( ) ;

/∗ desenha a chamine da casa ∗/g l C o l o r 3 f ( 0 . 0 , 0 . 0 , 0 . 0 ) ;g lBeg i n (GL_LINE_STRIP ) ;

g l V e r t e x 2 f ( 0 . 2 , 0 . 6 ) ;g l V e r t e x 2 f ( 0 . 2 , 0 . 9 0 ) ;g l V e r t e x 2 f ( 0 . 3 5 , 0 . 9 0 ) ;g l V e r t e x 2 f ( 0 . 3 5 , 0 . 7 5 ) ;

g lEnd ( ) ;

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 16 / 18

Page 22: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exemplo: Casa

Código (Cont...):

/∗ desenha a po r t a da casa ∗/g l C o l o r 3 f ( 1 . 0 , 0 . 0 , 0 . 0 ) ;g lBeg i n (GL_LINE_STRIP ) ;

g l V e r t e x 2 f ( 0 . 2 3 , 0 . 0 7 ) ;g l V e r t e x 2 f ( 0 . 2 3 , 0 . 3 ) ;g l V e r t e x 2 f ( 0 . 3 5 , 0 . 3 ) ;g l V e r t e x 2 f ( 0 . 3 5 , 0 . 0 7 ) ;

g lEnd ( ) ;

/∗ desenha a po r t a da j a n e l a ∗/g lBeg i n (GL_LINE_LOOP) ;

g l V e r t e x 2 f ( 0 . 5 , 0 . 4 ) ;g l V e r t e x 2 f ( 0 . 5 , 0 . 5 5 ) ;g l V e r t e x 2 f ( 0 . 6 5 , 0 . 5 5 ) ;g l V e r t e x 2 f ( 0 . 6 5 , 0 . 4 ) ;

g lEnd ( ) ;

/∗ i n i c i a o proces samento imed ia tamente ∗/g l F l u s h ( ) ;

}

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 17 / 18

Page 23: BCC327 - Computação Gráfica - 05 - Introdução ao OpenGL ...€¦ · 05 - Introdução ao OpenGL - Aula Prática RodolfoAyalaLopesCosta Departamento de Computação Instituto

Introdução ao OpenGL

Exercícios Propostos:

Desenvolva o código que gere as seguintes imagens:

Rodolfo Ayala Lopes Costa (UFOP) BCC327 - Computação Gráfica 4 de Abril de 2018 18 / 18