10.2 Empacotamento
No OpenGL, o modo de empacotamento da textura (em inglês, texture wrapping) define o comportamento do amostrador de textura quando as coordenadas estão fora do intervalo . Há três comportamentos principais:
GL_REPEAT: repete a textura fora do intervalo. Esse é o modo padrão de empacotamento.GL_MIRRORED_REPEAT: igual ao anterior, mas a textura é espelhada em e/ou quando a parte inteira da coordenada é um número ímpar.GL_CLAMP_TO_EDGE: Fixa as coordenadas no intervalo . O resultado é a repetição dos valores das primeiras e últimas linhas/colunas da textura.
A figura 10.13 mostra o resultado dos diferentes modos de empacotamento no intervalo de a no espaço de textura.
Figura 10.13: Modos de empacotamento do OpenGL.
O modo de repetição (GL_REPEAT) é frequentemente utilizado para produzir padrões formados por texturas ininterruptas (seamless textures). Essas texturas, quando dispostas lado a lado ou como um ladrilho, formam um padrão contínuo. Um exemplo é mostrado na figura 10.14.
Figura 10.14: Textura ininterrupta com empacotamento GL_REPEAT (adaptado do original).
O modo de empacotamento é configurado com a função glTexParameteri. É possível configurar um comportamento diferente para a direção (com GL_TEXTURE_WRAP_S) e direção (com GL_TEXTURE_WRAP_T). Por exemplo, o código a seguir habilita o modo de repetição em e o modo de repetição espelhada em :
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);Em texturas 3D, é possível usar ainda a direção (com GL_TEXTURE_WRAP_R).
Outros modos de empacotamento estão disponíveis além dos modos GL_REPEAT, GL_MIRRORED_REPEAT e GL_CLAMP_TO_EDGE, mas não são suportados em todas as especificações OpenGL. Por exemplo, o modo GL_CLAMP_TO_BORDER, que usa uma cor sólida para texels fora do intervalo , não é suportado no OpenGL ES utilizado no WebGL.