Función glTexImage2D

La función glTexImage2D especifica una imagen de textura bidimensional.

Sintaxis

void WINAPI glTexImage2D(
         GLenum  target,
         GLint   level,
         GLint   internalformat,
         GLsizei width,
         GLsizei height,
         GLint   border,
         GLint   format,
         GLenum  type,
   const GLvoid  *pixels
);

Parámetros

Destino

Textura de destino. Debe ser GL_TEXTURE_2D.

level

Número de nivel de detalle. El nivel 0 es el nivel base de la imagen. El nivel n es la n. ª imagen de reducción de mapa mip.

internalformat

Número de componentes de color de la textura. Debe ser 1, 2, 3 o 4, o una de las siguientes constantes simbólicas: GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12, GL_ALPHA16, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, GL_LUMINANCE12, GL_LUMINANCE16, GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12, GL_LUMINANCE16_ALPHA16, GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8, GL_INTENSITY12, GL_INTENSITY16, GL_R3_G3_B2, GL_RGB, GL_RGB4, GL_RGB5, GL_RGB8, GL_RGB10, GL_RGB12, GL_RGB16, GL_RGBA, GL_RGBA2, GL_RGBA4, GL_RGB5_A1, GL_RGBA8, GL_RGB10_A2, GL_RGBA12 o GL_RGBA16.

width

Ancho de la imagen de textura. Debe ser 2n + 2(border) para algunos enteros n.

height

Alto de la imagen de textura. Debe ser de 2*m* + 2(border) para algún entero m.

border

Ancho del borde. Debe ser 0 o 1.

format

Formato de los datos de píxeles. Puede asumir uno de los nueve valores simbólicos.

Valor Significado
GL_COLOR_INDEX
Cada elemento es un valor único, un índice de color. Se convierte en punto fijo (con un número no especificado de 0 bits a la derecha del punto binario), desplazado a la izquierda o derecha según el valor y el signo de GL_INDEX_SHIFT, y se agrega a GL_INDEX_OFFSET (vea glPixelTransfer). El índice resultante se convierte en un conjunto de componentes de color mediante las tablas GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G, GL_PIXEL_MAP_I_TO_B y GL_PIXEL_MAP_I_TO_A, y se fija al intervalo [0,1].
GL_RED
Cada elemento es un único componente rojo. Se convierte en punto flotante y se ensambla en un elemento RGBA adjuntando 0,0 para verde y azul, y 1,0 para alfa. A continuación, cada componente se multiplica por el factor de escala con signo GL_c_SCALE, se agrega al GL_c_BIAS de sesgo con signo y se fija al intervalo [0,1] (vea glPixelTransfer).
GL_GREEN
Cada elemento es un único componente verde. Se convierte en punto flotante y se ensambla en un elemento RGBA adjuntando 0,0 para rojo y azul, y 1,0 para alfa. A continuación, cada componente se multiplica por el factor de escala con signo GL_c_SCALE, se agrega al GL_c_BIAS de sesgo con signo y se fija al intervalo [0,1] (vea glPixelTransfer).
GL_BLUE
Cada elemento es un único componente azul. Se convierte en punto flotante y se ensambla en un elemento RGBA adjuntando 0,0 para rojo y verde, y 1,0 para alfa. A continuación, cada componente se multiplica por el factor de escala con signo GL_c_SCALE, se agrega al GL_c_BIAS de sesgo con signo y se fija al intervalo [0,1] (vea glPixelTransfer).
GL_ALPHA
Cada elemento es un único componente rojo. Se convierte en punto flotante y se ensambla en un elemento RGBA adjuntando 0,0 para rojo, verde, y azul. A continuación, cada componente se multiplica por el factor de escala con signo GL_c_SCALE, se agrega al GL_c_BIAS de sesgo con signo y se fija al intervalo [0,1] (vea glPixelTransfer).
GL_RGB
Cada elemento es un triple RGB. Se convierte en punto flotante y se ensambla en un elemento RGBA adjuntando 1,0 para alfa. A continuación, cada componente se multiplica por el factor de escala con signo GL_c_SCALE, se agrega al GL_c_BIAS de sesgo con signo y se fija al intervalo [0,1] (vea glPixelTransfer).
GL_RGBA
Cada elemento es un elemento RGBA completo. Se convierte en punto flotante. A continuación, cada componente se multiplica por el factor de escala con signo GL_c_SCALE, se agrega al GL_c_BIAS de sesgo con signo y se fija al intervalo [0,1] (vea glPixelTransfer).
GL_BGR_EXT
Cada píxel es un grupo de tres componentes en este orden: azul, verde, rojo.
GL_BGR_EXT proporciona un formato que coincide con el diseño de memoria de mapas de bits independientes del dispositivo Windows (DIB). De este modo, las aplicaciones pueden utilizar los mismos datos con las llamadas a funciones de Windows y las llamadas a funciones de píxeles de OpenGL.
GL_BGRA_EXT
Cada píxel es un grupo de cuadro componentes en este orden: azul, verde, rojo y alfa. GL_BGRA_EXT proporciona un formato que coincide con el diseño de memoria de mapas de bits independientes del dispositivo Windows (DIB). De este modo, las aplicaciones pueden utilizar los mismos datos con las llamadas a funciones de Windows y las llamadas a funciones de píxeles de OpenGL.
GL_LUMINANCE
Cada elemento es un único valor de luminancia. Se convierte en punto flotante y, a continuación, se ensambla en un elemento RGBA replicando el valor de luminancia tres veces para rojo, verde y azul, y adjuntando 1.0 para alfa. A continuación, cada componente se multiplica por el factor de escala con signo GL_c_SCALE, se agrega al GL_c_BIAS de sesgo con signo y se fija al intervalo [0,1] (vea glPixelTransfer).
GL_LUMINANCE_ALPHA
Cada elemento es un par luminancia/alfa. Se convierte en punto flotante y, a continuación, se ensambla en un elemento RGBA replicando el valor de luminancia tres veces para rojo, verde y azul. A continuación, cada componente se multiplica por el factor de escala con signo GL_c_SCALE, se agrega al GL_c_BIAS de sesgo con signo y se fija al intervalo [0,1] (vea glPixelTransfer).

type

Tipo de datos de los datos de píxeles. Se aceptan los siguientes valores simbólicos: GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT y GL_FLOAT.

pixels

Puntero a los datos de la imagen en memoria.

Valor devuelto

Esta función no devuelve ningún valor.

Códigos de error

La función glGetError puede recuperar los siguientes códigos de error.

Nombre Significado
GL_INVALID_ENUM
target no era un GL_TEXTURE_2D.
GL_INVALID_ENUM
format no era una constante de format acepada. Solo se aceptan constantes de formato distintas de GL_STENCIL_INDEX y GL_DEPTH_COMPONENT. Consulte la descripción del parámetro format para obtener una lista de los valores posibles.
GL_INVALID_ENUM
type no era una constante de tipo.
GL_INVALID_ENUM
type era GL_BITMAP y format no era GL_COLOR_INDEX.
GL_INVALID_VALUE
level era menor que cero o mayor que log2 max, donde max era el valor devuelto de GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE
internalformat no era 1, 2, 3 o 4.
GL_INVALID_VALUE
width o height era menor que cero o mayor que 2 + GL_MAX_TEXTURE_SIZE, o no se pudo representar como 2n + 2(border) para algún valor entero de n.
GL_INVALID_VALUE
border no era 0 o 1.
GL_INVALID_OPERATION
Se llamó a la función entre una llamada a glBegin y la llamada correspondiente a glEnd.

Comentarios

La función glTexImage2D especifica una imagen de textura bidimensional. La texturización asigna una parte de una imagen de textura especificada a cada primitivo gráfico para el que se habilita la texturización. La texturización bidimensional está habilitada y deshabilitada mediante glEnable y glDisable con el argumento GL_TEXTURE_2D.

Las imágenes de textura se definen con glTexImage2D. Los argumentos describen los parámetros de la imagen de textura, como el alto, el ancho, el ancho del borde, el número de nivel de detalle (vea glTexParameter) y el número de componentes de color proporcionados. Los tres últimos argumentos describen la forma en que la imagen se representa en la memoria. Estos argumentos son idénticos a los formatos de píxel usados para glDrawPixels.

Los datos se leen desde los píxeles como una secuencia de bytes con signo o sin signo, cortos o largos, o valores de punto flotante de precisión sencilla, dependiendo de tipo. Estos valores se agrupan en conjuntos de uno, dos, tres o cuatro valores, según format, para formar elementos. Si type es GL_BITMAP, los datos se consideran una cadena de bytes sin signo (y format debe ser GL_COLOR_INDEX). Cada byte de datos se trata como ocho elementos de 1 bits, con un orden de bits determinado por GL_UNPACK_LSB_FIRST (vea glPixelStore). Consulte glDrawPixels para obtener una descripción de los valores aceptables para el parámetro type.

Una imagen de textura puede tener hasta cuatro componentes por elemento de textura, en función de los componentes. Una imagen de textura de un componente usa solo el componente rojo del color RGBA extraído de píxeles. Una imagen de dos componentes usa los valores de R y A. Una imagen de tres componentes usa los valores R, G y B. Una imagen de cuatro componentes usa todos los componentes RGBA.

La texturización no tiene ningún efecto en el modo de índice de color.

La imagen de textura se puede representar con los mismos formatos de datos que los píxeles en un comando glDrawPixels, con la excepción de que no se pueden usar GL_STENCIL_INDEX y GL_DEPTH_COMPONENT. Los modos glPixelStore y glPixelTransfer afectan a las imágenes de textura exactamente de la manera en que afectan a glDrawPixels.

Una imagen de textura con un alto o ancho de cero indica la textura null. Si se especifica la textura null para el nivel de detalle 0, es como si se deshabilitara la texturización.

Las funciones siguientes recuperan información relacionada con glTexImage2D:

glGetTexImage

glIsEnabled con el argumento GL_TEXTURE_2D

Requisitos

Requisito Valor
Cliente mínimo compatible
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Gl.h
Biblioteca
Opengl32.lib
Archivo DLL
Opengl32.dll

Consulte también

glBegin

glDrawPixels

glEnd

glFog

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexParameter