tutorial descargar actualizar opengl

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



opengl minecraft (4)

Sé que tengo que llamar a uno de los siguientes 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 esa división?) El lado derecho (o ¿son todos?) Por dos, mi textura se expande, y si hago lo contrario, mi textura se repite dos veces. Logré codificar un atlas de textura aplicando operaciones hasta que funcionó. Pero tengo una idea correcta de lo que está pasando. ¿Por qué la división afecta la imagen y por qué invertirla refleja? ¿Cómo funcionan las coordenadas de textura?


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

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


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

Si usa coordenadas de textura mayores que 1 y su textura está configurada para repetirse, entonces es como si la hoja de goma fuera de tamaño infinito y la textura estuviese tejida a través de ella. Por lo tanto, si las coordenadas de tu textura para dos vértices fueron 0, 0 y 4, 0, entonces la imagen tendría que repetirse 4 veces entre esos vértices.

@ b1nary.atr0phy ¡Imagen para todos tus pensadores visuales!


OpenGL usa texturas inversas. Toma coordenadas del espacio del mundo (X, Y, Z) para texturizar el espacio (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 este:

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

Le dices a OpenGL que dibuje en la hoja de papel completa. Cuando aplica modificaciones, su espacio de texturación se modifica de acuerdo con las coordenadas dadas. Es por eso que, por ejemplo, cuando divides obteniendo la misma textura dos veces, le dices a OpenGL que trace la mitad de la hoja, en lugar de toda la hoja de papel.


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 cuando subes imágenes:

8.5.3 Estructura de imagen de textura

La imagen de textura en sí (a la que se refieren los datos) es una secuencia de grupos de valores. El primer grupo es la esquina inferior izquierda de la imagen de textura. Los grupos subsiguientes completan las filas de ancho ancho de izquierda a derecha; Las filas de altura se apilan de abajo hacia arriba formando un solo corte de imagen bidimensional; y las rodajas 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.