Desenho de objetos em OpenGL -- Computação Gráfica

jSSeção 3.1  

 

 

         3.1. Janela de Visualização

Janela de Visualização é local onde a imagem será visualizada. Para defini-la é necessário a utilização do comando Viewport . Abaixo são descritos os parâmetros relativos ao mesmo:

    >> Viewport ( int x, int y, sizei w, sizei h) , onde:

x e y -> são as coordenadas x e y (em pixels) em relação ao Canvas no qual a janela de visualização é criada
w e h -> são a largura e altura da tela de visualização. (em pixels)

Veja a figura abaixo:

A janela de visualização está demarcada pela área azul.O triângulo está dentro da janela de visualização de forma semelhante ao exemplo básico. Em volta dela tem o que nós chamamos de Canvas. Este por sua vez está definido na área cliente do formulário. Na figura também percebe-se onde se localiza o ponto (X,Y) recebido como parâmetro no comando glViewPort. 

O processo da criação do Canvas está descrito no procedimento OnInit() do exemplo básico, conforme abaixo:

    >> MyFrame *frame = new MyFrame(NULL, "Exemplo Basico", wxPoint(50, 50),
                                                     wxSize(350, 350));
    >>wxMenu *winMenu = new wxMenu;
    >>winMenu->Append(wxID_EXIT, "&Fechar");
    >>wxMenuBar *menuBar = new wxMenuBar;
    >>menuBar->Append(winMenu, "&Janela");
    >> frame->SetMenuBar(menuBar);
    >> frame->m_canvas = new TestGLCanvas(frame, -1, wxPoint(0, 0), wxSize(350, 350));
    >> frame->Show(TRUE);

Não é o objetivo desse tutorial ficar detalhando comandos da wxWindows. O que interessa para nós é que o formulário está sendo criado através do primeiro comando destacado. E o Canvas está sendo criado com o segundo comando destacado. Ele está na posição (0,0) em relação a área cliente do formulário e seu tamanho e altura são ambos 350 pixels. A partir daí a janela de visualização já pode ser configurada.

Vamos voltar ao exemplo básico e fazer algumas alterações em relação ao Viewport. Repare que Viewport está definido no procedimento Reshape conforme abaixo:

static void Reshape(int width, int height)
{
    glViewport(0,0, (GLint)width, (GLint)height);
}

Obs: O comando GLint transforma uma coordenada inteira (int) numa coordenada inteira nos padrões do OpenGL .

Neste caso o Viewport está configurado para a posição (0,0) . Vamos alterar a posição para (-100,-100) conforme abaixo:

static void Reshape(int width, int height)
{
    glViewport(-100,-100, (GLint)width, (GLint)height);
}

 

Efeito ao especificar as novas coordenadas (X,Y)

 

Repare que o Canvas continuou no mesmo lugar e o que mudou foi a janela de visualização. É importante ressaltar que somente a área comum entre o Canvas e a janela de visualização será visualizada pelo usuário.

 

Verifique os resultados abaixo:

 

glViewport(0,0, (GLint)width, (GLint)height);

glViewport(-100,-100,(GLint)width, (GLint)height);


 


[principal]

[anterior]

[próxima]