Viewport (OpenGL)

9
Introdução à Computação Gráfica Aula Viewport Herbet Ferreira [email protected] 18/05/2010 1

description

Aula sobre Viewport com OpenGL para a disciplina de Introdução à Computação Gráfica do curso de Ciência da Computação da UFPB no período 2010.1

Transcript of Viewport (OpenGL)

Page 1: Viewport (OpenGL)

Introdução à Computação Gráfica

Aula – Viewport

Herbet [email protected]

18/05/2010 1

Page 2: Viewport (OpenGL)

Definição

• A viewport ou janela de visualização é a área retangular da janela gráfica onde é desenhada a imagem final produzida.

18/05/2010 2

Page 3: Viewport (OpenGL)

Viewport em OpenGL

• glViewport(x, y, width, height)

– Define o visor na janela, onde x e y especificam o canto inferior esquerdo e width e height as suas dimensões;

– Por padrão, o visor ocupa a área gráfica total da janela;

– Podem existir vários visores dentro da janela;

– Para utilizar glViewport a função glMatrixModedeve ser habilitada com GL_VIEWPORT.

18/05/2010 3

Page 4: Viewport (OpenGL)

Viewport em OpenGL

• Como já foi referido, se glViewport(x, y, width, height) NÃO é EXPLICITAMENTE usado no programa, o visor por padrão é toda a área gráfica da janela;

• Um exemplo de programa que retrata esta situação:

– O visor por padrão tem a área 500x500 e é definido por glutInitWindowSize(500,500) no programa principal.

18/05/2010 4

Page 5: Viewport (OpenGL)

Exemplo

18/05/2010 5

int main(int argc, char ** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE);

glutInitWindowSize( 500,500 );

glutCreateWindow(“Aula – Viewport”);

glutDisplayFunc(draw);

glutKeyboardFunc(keyboard);

glutMainLoop();

return 0;

}

Page 6: Viewport (OpenGL)

Viewport em OpenGL

• Um visor é EXPLICITAMENTE definido pela função

glViewport(x, y, width, height);

• O visor pode ou não ocupar toda a área gráfica da janela de interface.

• Podem existir vários visores na janela de interface simultaneamente.

• A viewport deve ser definida antes da definição do tipo de projeção, sendo esta última podendo ser definida através de:– glutOrtho2D, glOrtho, gluPerspective

18/05/2010 6

Page 7: Viewport (OpenGL)

Exemplo

void draw(){

glClear ( GL_COLOR_BUFFER_BIT );

glMatrixMode(GL_VIEWPORT);

glViewport(0, 0, 250, 250);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(300, 1, 0.5, 400);

glColor3f(0, 0, 1);

glRectf(0.0, 0.0, 10.0, 30.0);

glutSwapBuffers();

}

18/05/2010 7

Page 8: Viewport (OpenGL)

Exemplovoid draw(){

glClear ( GL_COLOR_BUFFER_BIT );

glViewport(0, 0, 250, 250);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(300, 1, 0.5, 400);

glColor3f(0, 0, 1);

glRectf(0.0, 0.0, 10.0, 30.0);

glViewport(250,250,250,250);

glColor3f( 1, 0, 0 );

glRectf(0.0,0.0,10.0,30.0);

glutSwapBuffers();

}

18/05/2010 8

Page 9: Viewport (OpenGL)

Exercício

• Construa um programa em OpenGL que utilize duas viewports. Na primeira viewport ative a função z-buffer.

– Utilizar o exercício da aula anterior!

18/05/2010 9