Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Viewport (OpenGL)

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

  • Be the first to comment

Viewport (OpenGL)

  1. 1. Introdução à Computação Gráfica Aula – Viewport Herbet Ferreira herbet@di.ufpb.br 18/05/2010 1
  2. 2. 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
  3. 3. 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
  4. 4. 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
  5. 5. Exemplo 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; } 18/05/2010 5
  6. 6. 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
  7. 7. 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
  8. 8. 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
  9. 9. 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

×