Texturizado Open GL
Texturizado Open GL
Texturizado Open GL
INFORME DE INVESTIGACIÓN
NOMBRES (ALUMNOS)
1. INTRODUCCIÓN
El texturizado en OpenGL es un proceso que permite aplicar imágenes a la superficie de
objetos tridimensionales en una escena gráfica. Esto le da a los objetos un aspecto más
detallado y realista, permitiendo que se vean como si tuvieran una textura..
En OpenGL, el texturizado se realiza mediante el uso de texturas, que son imágenes 2D que
se aplican a una superficie 3D. Las texturas se pueden aplicar de muchas maneras diferentes,
incluyendo mapeo planar, mapeo cilíndrico y mapeo esférico.
Además, el texturizado en OpenGL también permite la utilización de múltiples texturas en un
solo objeto, lo que permite crear texturas más complejas y realistas. También se pueden
aplicar efectos de iluminación y sombreado a las texturas para lograr un aspecto más
detallado.
El texturizado también se utiliza para simular diferentes materiales y superficies, como
madera, metal, piedra, entre otros. Esto permite crear una amplia variedad de efectos visuales
y mejora la interacción del usuario con la escena, también se puede utilizar para crear efectos
especiales como reflejos, sombras y transparencias. Todo esto contribuye a mejorar la calidad
de la experiencia de visualización en OpenGL.
En resumen, el texturizado en OpenGL es una herramienta esencial para los desarrolladores
gráficos que buscan crear imágenes y escenas más realistas y detalladas. Con la capacidad
de aplicar texturas y efectos a los objetos
2. OBJETIVO (COMPETENCIA)
Mejorar la apariencia visual de los objetos en una escena 3D, al aplicar una textura a un
objeto, se le agrega detalle y profundidad, haciendo que se vea más realista.
3. FUNDAMENTO
Pág. No. 1 de 8
UNIVERSIDAD DE LAS FUERZAS ARMADAS - ESPE
INFORME DE INVESTIGACIÓN
Pág. No. 2 de 8
UNIVERSIDAD DE LAS FUERZAS ARMADAS - ESPE
INFORME DE INVESTIGACIÓN
Esto significa que veremos "cuadrados" de 16x12, cada uno representando un texel de
textura. Visualmente, es muy poco realista ver una textura "pixelada", así que para evitarlo,
aplicamos un filtro. Los más comunes son los "filtros lineales", que se basan en la
interpolación de cada píxel en la pantalla que se está dibujando. Se puede incorporar usando
la siguiente línea de código:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_LINEAR);
Con esto estamos parametrizando dos filtros. Uno para cuando la textura se representa más
grande de lo que es en realidad y otro para cuando la textura es más pequeña
respectivamente. En los dos le decimos que haga un filtro lineal, sin embargo, también
podríamos decirle que no aplique ningún filtro usando: GL_NEAREST.
Otro aspecto de las texturas que necesita ser parametrizado es la forma en que se repite la
textura. Al texturizar una escena, el modelador generalmente usa una textura pequeña que se
repite sobre la superficie, por lo que podemos usar menos memoria y sacrificar el realismo.
Podemos decirle a OpenGL que prepare texturas para dibujarlas como "mosaicos" o solo una
vez.
Lo que realmente hace OpenGL es, al dibujar texturas y usar filtros lineales, interpola de borde
a borde con el texel en los bordes opuestos para una apariencia más realista. Si queremos
usar este efecto usamos las siguientes líneas de código:
Pág. No. 3 de 8
UNIVERSIDAD DE LAS FUERZAS ARMADAS - ESPE
INFORME DE INVESTIGACIÓN
Por GL_TEXTURE_WRAP_S y GL_TEXTURE_WRAP_T nos referimos al filtro para las filas y las
columnas, respectivamente.
5. RESULTADOS Y CONCLUSIONES
● Las texturas también se utilizan para emular diferentes materiales y superficies como
madera, metal, piedra, etc. Lo que nos permite crear una amplia gama de efectos
visuales y mejorar la interacción del usuario con la escena, también se puede utilizar
para crear efectos especiales como reflejos, sombras y transparencia. Todo esto
ayuda a mejorar la experiencia de visualización de OpenGL .
● El proceso de texturizado no es propio de OpenGL por lo que debemos cargar las
imágenes que forman el texturizado de manera manual.
6. CUESTIONARIO
● Seleccione la instrucción para parametrizar un filtro cuando la textura se representa
más grande de lo que es en realidad:
o glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_LINEAR);
o glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
GL_LINEAR);
7. BIBLIOGRAFÍA
● Rojas, J. T. (2013, April 10). UNIVERSIDAD AUTÓNOMA METROPOLITANA.
Departamento de Ciencias de la Computacion, UAM Iztapalapa. Retrieved
Pág. No. 4 de 8
UNIVERSIDAD DE LAS FUERZAS ARMADAS - ESPE
INFORME DE INVESTIGACIÓN
#include <GL/glut.h>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#define STB_IMAGE_IMPLEMENTATION
#include "stb/stb_image.h"
GLuint texture;
void display() {
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60, 1, 1, 100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 3, 0, 0, 0, 0, 1, 0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_TRIANGLES);
Pág. No. 5 de 8
UNIVERSIDAD DE LAS FUERZAS ARMADAS - ESPE
INFORME DE INVESTIGACIÓN
glTexCoord2f(0, 0);
glVertex3f(-1, -1, 0);
glTexCoord2f(1, 0);
glVertex3f(1, -1, 0);
glTexCoord2f(1, 1);
glVertex3f(1, 1, 0);
glTexCoord2f(0, 1);
glVertex3f(-1, 1, 0);
glEnd();
glDisable(GL_TEXTURE_2D);
glutSwapBuffers();
}
void loadTexture() {
int width, height, channels;
unsigned char* image = stbi_load("texture.png", &width, &height, &channels, 0);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
stbi_image_free(image);
}
glutMainLoop();
return 0;
}
Pág. No. 6 de 8
UNIVERSIDAD DE LAS FUERZAS ARMADAS - ESPE
INFORME DE INVESTIGACIÓN
Pág. No. 7 de 8
UNIVERSIDAD DE LAS FUERZAS ARMADAS - ESPE
INFORME DE INVESTIGACIÓN
Pág. No. 8 de 8