Escolar Documentos
Profissional Documentos
Cultura Documentos
Professores:
Aula 7
Contedo:
- OpenGL
OpenGL - Limitaes
- No gerencia janelas nem trata eventos produzidos por dispositivos de interao. - No possui comandos de alto nvel para especificao de objetos 3D complexos. - Objetos complexos devem ser construdos a partir de primitivas geomtricas simples.
10
11
12
APIs relacionadas
GLU (OpenGL Utility Library)
- Parte do padro OpenGL. - NURBS, trianguladores, qudricas, etc.
13
GLUT
Biblioteca para criao de interfaces grficas simples para programas grficos baseados em OpenGL. Fornece um conjunto de primitivas para desenho de objetos mais complexos como qudricas e etc.
14
Se GLUT no for usado, os headers OpenGL tm que ser includos explicitamente, junto com os de outra camada de interface. H APIs para construo de interfaces grficas (GUI) construdas sobre o GLUT cujos headers incluem os do GLUT. - Por exemplo, o pacote GLUI requer:
#include <GL/glui.h>
(J inclui glut.h)
15
Callbacks
Callbacks so rotinas que sero chamadas para tratar eventos. Para uma rotina callback ser efetivamente chamada ela precisa ser registrada atravs da funo.
glutXxxFunc (callback)
Onde Xxx designa uma classe de eventos e callback o nome da rotina. Por exemplo, para registrar uma callback de desenho chamada Desenho, usa-se
glutDisplayFunc (Desenho);
16
Callbacks de Desenho
a rotina chamada automaticamente sempre que a janela ou parte dela precisa ser redesenhada (ex.: janela estava obscurecida por outra que foi fechada) Todo programa GLUT precisa ter uma! Exemplo:
17
Callbacks de Redimensionamento
glutReshapeFunc (Reshape);
Chamada sempre que a janela redimensionada, isto , teve seu tamanho alterado. Tem a forma
void reshape (int width, int height){...}
width/height so a nova largura/altura da janela (em pixels) Obs: Se uma rotina de redimensionamento no for especificada, o GLUT usa uma rotina de redimensionamento "default" que simplesmente ajusta o viewport para usar toda a rea da janela.
18
Callbacks
Outras callbacks comumente usadas Eventos de teclado
void keyboard(unsigned char key, int x, int y)
Eventos de mouse
void mouse(int button,int state,int x,int y) void motion(int x, int y) void passiveMotion(int x, int y)
19
20
21
22
23
24
25
26
Rendering
27
Primitivas de Desenho
glBegin ( PRIMITIVA );
especificao de vrtices, cores, coordenadas de textura, propriedades de material
glEnd (); Entre glBegin() e glEnd() apenas alguns comandos podem ser usados. Ex.: glMaterial glNormal glTexCoord
28
Primitivas de Desenho
Uma vez emitido um vrtice (glVertex), este desenhado com as propriedades (cor, material, normal, coordenadas de textura etc) registradas nas variveis de estado correspondentes. Concluso: Antes de emitir um vrtice, assegurar-se que cor, material, normal, etc tm o valor certo.
29
Primitivas de Desenho
30
Triangle Strips
Idia fundamental: minimizar volume de vrtices e consequentemente, minimizar clculos de iluminao, normais, clipping, etc.
31
Triangle Strips
Strips: possvel descrever um tringulo com menos de 3 vrtices? Problema
31
Triangle Strips
31
Triangle Strips
32
Professores:
Aula 7
Contedo:
- OpenGL