Buscar

slides-viewport

Prévia do material em texto

Introdução à Computação Gráfica
Aula – Viewport
Herbet Ferreira
herbet@di.ufpb.br
18/05/2010 1
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
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 glMatrixMode
deve ser habilitada com GL_VIEWPORT.
18/05/2010 3
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
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;
}
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
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
Exemplo
void 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
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

Continue navegando