Sétima Lista - Visibilidade


Aquecimento

  1. Inclua no Makefile os comandos necessários para gerar o executável do programa planes.c.
    1. Qual é o papel do argumento GL_DEPTH_BUFFER_BIT da função glClear?
    2. Qual é o papel do argumento GL_DEPTH_TEST da função glEnable? O que acontecerá se removermos este comando?
    3. Modifique o argumento da função glDepthFunc para GL_NEVER, GL_ALWAYS, GL_LEQUAL, GL_EQUAL, GL_GEQUAL, GL_GREATER e GL_NOTEQUAL. Compare os resultados obtidos.
    4. Qual das funções corresponde ao algoritmo z-Buffer?
    5. Qual delas corresponde ao algoritmo de pintor?
  2. Inclua no Makefile os comandos necessários para gerar o executáveis do programa triangles.c implementado pelo Marcelo. Modifique o argumento da função glDepthFunc e compare os resultados em relação ao programa anterior.
  3. O pacote Mesa provê explicitamente mecanismos para remover superfícies escondidas. O efeito de remoção de linhas escondidas pode ser obtido com o uso do stencil buffer como demonstram os programas ohidden.c e hidline.c. Execute os programas e responda as seguintes perguntas.
    1. Por que o contorno de cada polígono foi desenhado duas vezes?
    2. Para que serve o trecho de código que desenha o interior de cada polígono?
    3. Ao invés de utilizar o stencil buffer, obteremos o mesmo resultado visual se utilizarmos o algoritmo de z-buffer colorindo as faces com a cor do fundo? Justifique.
      Dica: Executar o programa hidline2.c implementado pelo Marcelo.

Programação

  1. Modifique o programa hidplanes.c, implementado pelo Marcelo, de forma a desenhar corretamente a sequêcia das regiões dos planos, utilizando a estrutura BSP para ordenação e o algoritmo de pintor para desenhar.
  2. Altere a cena que você gerou na quarta lista, de forma que seja desenhada uma cena em wireframe com linhas escondidas.

  3. Voltar para a lista anterior.
    Avançar para a próxima lista.