Estoy estudiando un texto sobre texture mapping
y en la preparing to draw
sesión, leí:
Definir los parámetros de envoltura de textura. Esto controlará lo que sucede cuando se encuentra una coordenada de textura mayor que 1.0 o menor que 0.0:
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,wrap);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,wrap);
donde wrap es:
GL_REPEAT: especifica que este patrón se repetirá (es decir, wrap-around) si se encuentran coordenadas de textura transformadas menores que 0.0 o mayores que 1.0.
GL_CLAMP: especifica que el patrón se "pegará" al valor de 0.0 o 1.0.
Pero no hay explicación ¿cuál es la razón de encontrar tales coordenadas de textura?
Por ejemplo, supongamos que acabo de dibujar un rectángulo y quiero aplicarle una imagen como textura, ¿es posible encontrar tales coordenadas?
glTexCoord2f(0, 2);
por ejemplo. Esto tiene un significado bien definido muy específico tanto en el código como cuando se ejecuta el programa. Si ve esto, el programador lo ha hecho intencionalmente porque le da el resultado que desea.Sí, puede encontrar coordenadas de textura mayores
1.0
y menores que0.0
.Esto depende completamente del modelo que cargó. Normalmente, para cada vértice hay coordenadas de posición, normal y textura almacenadas. En la mayoría de los formatos de archivo de malla, la coordenada de textura no está restringida a ningún rango.
Esto se usa para repetir una textura . Por ejemplo, para abarcar una textura tiempo cuatro entre un quad de vértices, las coordenadas de textura serían
0,0
,0,4
,4,0
y4,4
. Sin textura envoltura, se necesitaría vértices adicionales para dividir la superficie en 4 veces 4 sub superficies con cada uno de las coordenadas de textura0,0
,0,1
,1,0
,1,1
. Menos vértices dan como resultado un mejor rendimiento de representación.Típicamente, no se desea que el usuario note los bordes de una textura repetida. Por lo tanto, las texturas repetidas son enlosables en la mayoría de los casos. Eso significa que el borde derecho se desvanece sin problemas hacia el izquierdo y el borde superior hacia el inferior. De esta manera, la transición es suave y esperamos que el usuario no se dé cuenta.
Un tema más avanzado, pero relacionado, es oscurecer hábilmente el hecho de que la misma textura se repitió varias veces. Por ejemplo, mezclar texturas repetidas de diferentes tamaños, por ejemplo, una textura de pared y una calcomanía de suciedad, es una técnica común.
fuente
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
¡Esa es una explicación práctica real! ¡Gracias!