Nona Lista - Textura


Aquecimento

  1. Inclua no Makefile os comandos necessários para gerar o executável do programa checker.c.
    1. Qual é o trecho de código que especifica a textura? Como a textura é especificada?
      Dica: Altere as definições das variáveis c e checkImage no procedimento makeCheckImage.
    2. Qual é o trecho de código que especifique a forma de mapeamento de textura? Qual é o modo de texturização utilizado?
      Dicas: Subistitua os valores 1.0 dos quatro primeiros comandos glTexCoord2f no procedimento display por outros valores (compare com o programa chess.c). Para valores maiores que 1.0, tente ainda alterar o parâmetro GL_CLAMP para GL_REPEAT (compare com o programa checker2.c).
      Aumente os valores das coordenadas x e z nos dois últimos comandos glVertex3f do procedimento display.
    3. Qual é o comando que habilita o efeito de texturização?
  2. Inclua no Makefile os comandos necessários para gerar o executável do programa mipmap.c.
    1. Como são definidos diferentes níveis de resolução para uma mesma textura? (Observe que OpenGL/ OpenGL para WNT'95 não impõe que os distintos mapas utilizados em MIP sejam relacionados. No exemplo, cada mapa corresponde a uma cor.)
    2. Como é especificada a texturização com multiresolução?
      O que acontecerá se substituirmos GL_NEAREST_MIPMAP_NEAREST por GL_NEAREST? Ou por GL_NEAREST_MIPMAP_LINEAR? Justifique.
    3. Quando o uso de uma textura com multiresolução é recomendada?
  3. O pacote Mesa/ OpenGL suporta a geração automática das coordenadas no espaço de textura para obter a cor de textura a ser aplicada num ponto do objeto. Isso é demonstrado no programa texgen.c. Este programa define um mapa de textura 1D (stripeImage) - dois texels em vermelho e 30 texels em verde - e associa a cada coordenada do bule (x,y,z,w) o seguinte texel (coordenada s):
    s = Ax + By + Cz + Dw,
    onde A, B, C e D são definidos pelo vetor sgenparams.
    1. O que acontecerá se modificarmos a definição do vetor stripeImage?
    2. O que acontecerá se modificarmos a definição do vetor sgenparams?
  4. O pacote Mesa/ OpenGL suporta ainda a geração automática de coordenadas esféricas dos mapas. O programa genobjtex.c demonstra o tal mapeamento sobre a superfície de um cubo, sobre uma superfície cilídrica (tecle c alternadamente) e sobre uma superfície toroidal (tecle t). Tente executar o programa com as imagens brick.rgb, reflect.rgb , girl.rgb e web.rgb.
    1. Em qual dos três objetos, o desenho da textura aparece mais nítido? Justifique.
    2. Por que ao serem rotacionados parece que a textura "desliza" sobre os objetos?
    3. Qual das quatro imagens deu aos objetos uma aparência mais "metálica"? Justifique.
    Observação: O programa genobjtex.c inclui o arquivo readtex.c.

Programação

  1. Modifique o programa checker.c, de forma que com o uso da técnica de multiresolução seja "atenuado" o problema observado no item 1.2 ao aumentarmos a profundidade do polígono inclinado.
  2. Modifique o programa genobjtex.c, de forma que seja utilizado o padrão de xadrez definido no programa checker.c para texturizar os três objetos.
  3. Altere a cena que você gerou na oitava lista, adicionando textura à mesa.

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