A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Viewport.

Apresentações semelhantes


Apresentação em tema: "Viewport."— Transcrição da apresentação:

1 Viewport

2 Conceito: Qualquer ponto mapeado fora da viewport o sistema o ignora.
É a região retangular da janela onde a imagem é desenhada, também chamada de janela de exibição ou visualização. É medido em coordenadas inteiras que refletem a posição relativa em “pixels” do canto inferior-esquerdo da janela. Qualquer ponto mapeado fora da viewport o sistema o ignora.

3 Void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
Esta função é usada para definir a viewport. Os dois primeiros parâmetros servem para especificar o canto inferior esquerdo da janela, enquanto os dois últimos definem, respectivamente, a largura e a altura da janela. Quando se está trabalhando com duas viewport, em geral é atribuido o valor 0 para x e para y e diferentes valores para largura e altura da janela.

4 Utilização em OpenGL A glViewport é chamada de dentro da função callback AlteraTamanhoJanela. Assim sempre que um usuário altera o tamanho da janela GLUT, a viewport é redefinida. As variáveis largura e altura recebem, respectivamente, os valores de largura e altura da janela GLUT cada vez que o usuário altera o seu tamanho.

5 void AlteraTamanhoJanela(GLsizei w, GLsizei h) {
GLsizei largura, altura; // Evita a divisao por zero if(h == 0) h = 1; // Atualiza as variáveis largura = w; altura = h; // Especifica as dimensões da Viewport glViewport(0, 0, largura, altura); // Inicializa o sistema de coordenadas glMatrixMode(GL_PROJECTION); glLoadIdentity(); // Estabelece a janela de seleção (esquerda, direita, inferior, // superior) mantendo a proporção com a janela de visualização if (largura <= altura) gluOrtho2D (-40.0f, 40.0f, -40.0f*altura/largura, 40.0f*altura/largura); else gluOrtho2D (-40.0f*largura/altura, 40.0f*largura/altura, -40.0f, 40.0f); }

6 Dessa forma, é possível manter a correção de aspecto caso a janela GLUT tenha seu tamanho alterado e fique muito estreita ou larga, ou muito alta ou baixa. A multiplicação pela razão entre largura e altura (relação de aspecto) garante que a window será definida de maneira que a imagem final não seja deformada.

7

8

9

10

11 Variáveis: float win, aspecto; int largura, altura; Nova Função:
void DesenhaCasa() void FazMoldura()

12 // Função que coloca uma linha ao redor da área da window
void FazMoldura() { glLineWidth(3); glBegin(GL_LINE_LOOP); glVertex2f(-win*aspecto,-win); glVertex2f(-win*aspecto, win); glVertex2f( win*aspecto, win); glVertex2f( win*aspecto,-win); glEnd(); glLineWidth(1); }

13 Na função AlteraTamanhoJanela acrescente a variável global declarada:
aspecto = (float) largura/altura; Depois do parâmetro de atualização de variáveis: largura e altura

14 No sistema de coordenadas comente as duas linhas do calculo da correção da razão de aspecto e acrescente: gluOrtho2D (-win*aspecto, win*aspecto, -win, win); Obs: Não esqueça de colocar o valor da variável win na função inicializa: win = 50.0f; Compile e execute!


Carregar ppt "Viewport."

Apresentações semelhantes


Anúncios Google