Estou estudando um texto sobre texture mapping
e, na preparing to draw
sessão, li:
Defina os parâmetros de quebra de textura. Isso controlará o que acontece quando uma coordenada de textura maior que 1,0 ou menor que 0,0 é encontrada:
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,wrap);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,wrap);
onde wrap é:
GL_REPEAT: especifica que esse padrão será repetido (ou seja, wrap-around) se forem encontradas coordenadas de textura transformadas menores que 0.0 ou maiores que 1.0.
GL_CLAMP: especifica que o padrão irá "aderir" ao valor em 0,0 ou 1,0.
Mas não há explicação qual é o motivo de encontrar essas coordenadas de textura?
Por exemplo, suponha que eu tenha acabado de desenhar um retângulo e deseje aplicar uma imagem como textura nela, é possível encontrar essas coordenadas?
glTexCoord2f(0, 2);
por exemplo. Isso tem um significado bem definido muito específico no código e quando o programa está sendo executado. Se você vir isso, o programador fez isso intencionalmente porque fornece o resultado que deseja.Sim, você pode encontrar coordenadas de textura maiores que
1.0
e menores que0.0
.Isso depende completamente do modelo que você carregou. Normalmente, para cada vértice, há coordenadas de posição, normal e de textura armazenadas. Na maioria dos formatos de arquivo de malha, a coordenada da textura não está restrita a nenhum intervalo.
Isso é usado para repetir uma textura . Por exemplo, para abranger uma textura quatro vezes entre um quad de vértices, as coordenadas de textura seria
0,0
,0,4
,4,0
e4,4
. Sem textura de embrulho, você precisaria de vértices adicionais para dividir a superfície em 4 vezes 4 sub superfícies com cada um as coordenadas de textura0,0
,0,1
,1,0
,1,1
. Menos vértices resultam em melhor desempenho de renderização.Normalmente, não é desejado que o usuário observe as bordas de uma textura repetida. Portanto, texturas repetidas são inclináveis na maioria dos casos. Isso significa que a borda direita desvanece-se perfeitamente para a esquerda e a borda superior para a inferior. Dessa forma, a transição é suave e, esperamos, não seja notada pelo usuário.
Um tópico mais avançado, mas relacionado, é ocultar inteligentemente o fato de que a mesma textura foi repetida várias vezes. Por exemplo, misturar texturas repetidas de tamanhos diferentes, por exemplo, uma textura de parede e um adesivo de sujeira, é uma técnica comum.
fonte
Without texture wrapping, you would need additional vertices to split the surface into 4 times 4 sub surfaces with each the texture coordinates 0,0, 0,1, 1,0, 1,1
Essa é uma explicação prática real! Obrigado!