¿Cómo funcionan las coordenadas de textura de opengl?


Sé que tengo que hacer una de las siguientes llamadas antes de cada llamada a glVertex:

glTexCoord(0,0); 
glTexCoord(0,1); 
glTexCoord(1,1); 
glTexCoord(1,0); 

Pero no tengo idea de lo que significan. Sé, sin embargo, que si multiplico(o es que dividir?) el lado derecho(o son todos los? por dos, mi textura se expande, y si hago lo contrario, mi textura se repite dos veces. He logrado codificar un atlas de texturas aplicando operaciones hasta que funcionó. Pero tengo una idea correcta de lo que está pasando. ¿Por qué dividir estos afecta a la imagen, y por qué ¿invertir el espejo? ¿Cómo funcionan las coordenadas de textura?

 50
Author: mk., 2011-04-04

4 answers

Las coordenadas de textura especifican el punto de la imagen de textura que corresponderá al vértice para el que las está especificando. Piense en una lámina de goma rectangular con su imagen de textura impresa en ella, donde la longitud de cada lado se normaliza en el rango 0-1. Ahora digamos que quieres dibujar un triángulo usando esa textura. Tomarías 3 alfileres y los colocarías en la lámina de goma en las posiciones de cada una de tus coordenadas de textura deseadas. (Decir [0, 0], [1, 0] y [1, 1]) luego mueve esos pines (sin sacarlos) a su vértice coordenadas (Dicen [0, 0], [0.5, 0] y [1, 1]), de modo que la hoja de goma se estira y la imagen se distorsiona. Así es como funcionan las coordenadas de textura.

Si utiliza coordenadas de textura mayores que 1 y su textura está configurada para repetir, entonces es como si la lámina de goma fuera de tamaño infinito y la textura estuviera embaldosada a través de ella. Por lo tanto, si sus coordenadas de textura para dos vértices fueran 0, 0 y 4, 0, entonces la imagen tendría repetirse 4 veces entre esos vértices.

introduzca la descripción de la imagen aquí @b1nary.atr0phy Imagen para todos los pensadores visuales!

 108
Author: geofftnz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-15 09:08:04

OpenGL utiliza texturizado inverso. Toma coordenadas del espacio del mundo (X, Y, Z) al espacio de textura (X,Y) al espacio discreto(U,V), donde el espacio discreto está en el dominio [0,1].

Tome un polígono, piense en él como una hoja de papel. Con esto:

glTexCoord(0,0); 
glTexCoord(0,1); 
glTexCoord(1,1); 
glTexCoord(1,0); 

Le dices a OpenGL que dibuje en toda la hoja de papel. Cuando se aplican modificaciones, el espacio de texturización se modifica en consecuencia a las coordenadas de entrega. Es por eso que, por ejemplo, cuando se divide se obtiene la misma textura dos veces, se dice OpenGL para asignar la mitad de la hoja, en lugar de toda la hoja de papel.

 8
Author: Cristina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-03 21:33:20

El Capítulo 9 del Libro Rojo explica esto en detalle y está disponible de forma gratuita en línea.

Http://www.glprogramming.com/red/chapter09.html

Las coordenadas de textura asignan x,y al espacio 0-1 en el espacio de textura de ancho y alto. Esto se estira como una lámina de goma sobre los triángulos. Se explica mejor con imágenes y el Libro Rojo hace esto.

 6
Author: dorbie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-21 21:06:29

Para texturas de imagen 2D, 0,0 en coordenadas de textura corresponde a la esquina inferior izquierda de la imagen, y 1,1 en coordenadas de textura corresponde a la esquina superior derecha de la imagen. Tenga en cuenta que "esquina inferior izquierda de la imagen" no está en el centro del píxel inferior izquierdo, sino en el borde del píxel.

También es interesante al subir imágenes:

8.5.3 Textura Estructura de la imagen

La imagen de textura en sí (referida por data) es una secuencia de grupos de valores. El primer grupo es la esquina inferior izquierda de la imagen de textura. Los grupos posteriores rellenan filas de ancho ancho de izquierda a derecha; las filas de alto se apilan de abajo hacia arriba formando un solo segmento de imagen bidimensional; y los segmentos de profundidad se apilan de atrás hacia adelante.

Tenga en cuenta que la mayoría de los formatos de imagen tienen los datos comienzan en la parte superior, no en la fila inferior.

 3
Author: Andreas Haferburg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-15 11:38:57