Nesta
versão os objetos são exibidos como sólidos,
para isso ao inicializar o ambiente alteramos o comando glPolygonMode(GL_FRONT_AND_BACK,
GL_LINE) para glPolygonMode(GL_FRONT_AND_BACK, GL_FILL) .
A
tonalização dos objetos toma por base o modelo
de Gouraud e é definida através do parâmetro
GL_SMOOTH do comando glShadeModel.
Agora
além da solidez dos objetos a cena também se
alterna entre dia e noite - onde os navios têm luzes
acesas - através da configuração de diversos
parâmetros de iluminação detalhados a
seguir.
Cena - Dia
Para
criar o efeito de "luz diurna", na fonte de luz
definida, mudamos os parâmetros de ambiente, difusão
e especularidade :
GLfloat
lightamb[4] = {0.5,0.5,0.5,1.0};
GLfloat lightdif[4] = {0.8,0.8,0.8,1.0};
GLfloat lightesp[4] = {1.0,1.0,1.0,1.0};
Além disso, para obter um efeito mais realista, clareamos
a cor de fundo, simulando um fator ambiente ainda maior.
Cena - Noite
Para
criar o efeito de "luz noturna", na fonte de luz
definida, diminuímos os parâmetros de ambiente,
difusão e especularidade:
GLfloat
lightamb[4] = {0.1,0.1,0.1,1.0};
GLfloat lightdif[4] = {0.5,0.5,0.5,1.0};
GLfloat lightesp[4] = {0.1,0.1,0.1,1.0};
Luzes acesas
Para
criar o efeito de iluminação dentro dos navios,
setamos as janelas com uma especularidade bastante alta, ou
seja, reflete bastante luz, para isso alteramos os parâmetro
de emissividade do material, através do comando:
especularidade[4]
= {1.0, 1.0, 1.0, 1.0};
glMaterialfv(GL_FRONT, GL_EMISSION, especularidade);