Baixe o app para aproveitar ainda mais
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
Compartilhar