05 Opengl Texturas

Páginas: 5 (1008 palabras) Publicado: 21 de enero de 2013
Introducción a los
gráficos 3D
OpenGL

Texturas
• Tenemos una capacidad limitada de
generar superficies complejas usando
simplemente geometría
• Las imágenes nos dan la ilusión de
geometría
• Cuando pintamos imágenes en los
polígonos hablamos de “texture
mapping ”.

Texture Mapping
• La textura (Texture map) es una imagen en dos dimensiones. Los
colores de un pixel en la textura se sueledenominar texels.
• Los texels se especifican mediante coordenadas de texturas (u,v)
• Para cada pixel de la pantalla se substituye su color por el texel
asociado
• Hacemos corresponder una coordenada (u,v) al espacio de
coordenadas del polígono (s, t)
T

V

U

S

Texture Mapping
• La conversión de (u,v) a (s,t) se realiza dando una
coordenada de textura por cada vértice.
• Podemos interpolar laconversión de (u,v) a (s,t) para
los puntos entre vértices.

Ejemplo de Texture Map

Applied to tilted polygon

Ejemplo de Texture Map

glVertex3d (s, s, s)
glTexCoord2d(1,1);

glVertex3d (-s, -s, -s)
glTexCoord2d(0, 0);

Ejemplo de Texture Map
glVertex3d (s, s, s)
glTexCoord2d(5, 5);

glVertex3d (s, s, s)
glTexCoord2d(1, 1);

Coordenadas

The Art of 3D Computer
Animation and Effects
Isaac Kerlow Coordenadas de texturas
• Cada polígono puede tener coordenadas de objeto y
coordenadas de textura
– Las coordenadas del objeto dicen donde está éste en el
espacio.
– Las coordenadas de textura describen le posición de un
vertice dentro de la textura (texel). Normalmente en el
rango 0-1
– Las coordenadas de texturas se interpolan entre vértices

• glTexCoord{1234}{sifd}(TYPE coords)

Textures• Un objeto Textura (Texture)
– Es un objeto o tipo de datos en OpenGL que guarda la textura en
memoria y que nos permite identificarlo facilmente.
– Suministra una forma eficiente de manejo que evita la carga continuada
de texturas
– Podemos especificar la prioridad de las texturas. Nos permite determinar
que texturas permanecen en memoria.
– OpenGL utiliza la política “least recently used (LRU)”si no asignamos una
prioridad.

Ejemplos de utilización
• Leemos un .bmp desde fichero
– Utilizamos el tipo de datos Image
• getc() y fseek() para leer el tamaño de la imagen
• fread() lee los datos

Paso 2 – Creamos los objetos Texture
• glGenTextures(1, &texture[texture_num]);

– El primer argumento le dice a GL cuantas textura crear
– El segundo argumento es un puntero que le dice a
OpenGLdonde situar los identificadores de las texturas
a crear
• texture[ ] es de tipo GLuint

Paso 3 – Determina la textura
• Le indica a OpenGL que deseas trabajar con una
determinada textura (se le dice el identificador de la
misma)
– glBindTexture(GL_TEXTURE_2D,
texture[texture_num]);

• Las texturas pueden ser de 1D a 3D

Paso 4 – Definiendo la textura
• glTexParameter()
– Pone varios de losparámetros que controlan cómo tratar la textura
cuando se aplica en el renderizado
– // scale linearly when image bigger than texture
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILT
ER,GL_LINEAR);
– // scale linearly when image smaller than texture
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILT
ER,GL_LINEAR);

Paso 5 – Los datos de la imagen
– glTexImage2D();
GL_TEXTURE_2D

(2D Texture)

0

(levelof detail 0)

3

(3 components, RGB)

image1->sizeX

(size)

image1->sizeY

(size)

0

(no border pixel)

GL_RGB

(RGB color order)

GL_UNSIGNED_BYTE

(unsigned byte data)

image1->data

(pointer to the data))

Paso 6 – Aplicando la textura
• Antes de definir la geometría
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
GL_REPLACE); glTexEnv()
El primer argumento es siempre GL_TEXTURE_ENV
GL_TEXTURE_ENV_MODE

GL_DECAL
GL_DECAL (alpha blends texture with
poly
poly color)

GL_REPLACE
GL_REPLACE (straight up
replacement)
replacement)

GL_MODULATE
GL_MODULATE (texture application is
a function of poly lighting)
function

GL_BLEND
GL_BLEND (texture controls blending
with
with another color)

If
If GL_BLEND selected, second...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Opengl
  • Opengl
  • Opengl
  • Opengl
  • Opengl
  • que es OpenGL?
  • Opengl
  • Opengl

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS