Viewport (OpenGL)
-
Upload
herbet-ferreira -
Category
Education
-
view
5.671 -
download
2
description
Transcript of 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
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
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
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
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