A aplicação das texturas foi realizada através da utilização das rotinas providas pela API OpenGL.
Definimos para cada uma das embarcações as seguintes estruturas:
Através das estruturas acima a aplicação das texturas pode ser realizada de maneira simples e concisa. Para todas as embarcações e também para o tabuleiro, foram construídos procedimentos, cuja única finalidade era a aplicação das texturas.
A especificação das texturas era realizada em um laço de
repetição. Lá dentro criamos o link entre identificador e textura,
através do comando glBindTexture() e da utilização do nosso tipo
enumerado.
Recuperamos também os arquivos do disco contendo as texturas
utilizando a função imageLoad() e criamos mapas mip para a aplicação
destas através do comando gluBuild2DMipmaps().
A função imageLoad() foi criada para carregar imagens no formato
ppm binário do disco para a memória. Desta maneira transformamos todas
as texturas encontradas para este formato com uso de softwares de
manipulação de imagens.
O formato ppm se caracteriza pela seqüência dos seguintes atributos:
Após a especificação, o mapeamento das texturas é realizado
concomitantemente a construção do modelo, intercalando-se os comandos
de textura e geometria: glTexCoord2d() e glVertex3d()
Para objetos construídos a partir da biblioteca auxiliar GLU, a
textura pode ser habilitada e aplicada normalmente com
gluQuadricTexture().
Destacamos também a escolha do modo de aplicação da textura, que é
realizada com a utilização do comando glTexEnvf().
Optamos pela opção Modulate, na qual a textura é utilizada como um
modificador para as cores resultantes da iluminação.
O OpenGL utiliza o valor obtido do mapa de textura e através de
operações de multiplicação com a cor do fragmento define a cor
final.
Esse modo é utilizado quando deseja-se que a textura obedeça a
condições de iluminação.