Compartir a través de


Función glTexSubImage2D

La función glTexSubImage2D especifica una parte de una imagen de textura unidimensional existente. No se puede definir una nueva textura con glTexSubImage2D.

Sintaxis

void WINAPI glTexSubImage2D(
         GLenum  target,
         GLint   level,
         GLint   xoffset,
         GLint   yoffset,
         GLsizei width,
         GLsizei height,
         GLenum  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 la base de la imagen. El nivel n es la n. ª imagen de reducción de mapa mip.

xoffset

Desplazamiento de textura en la dirección x dentro de la matriz de texturas.

yoffset

Desplazamiento de textura en la dirección y dentro de la matriz de texturas.

width

Ancho de la subimagen de textura.

height

Alto de la subimagen de textura.

format

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

Valor Significado
GL_COLOR_INDEX
Cada elemento es un valor único, un índice de color. Se convierte en formato de 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 formato de 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 formato de 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 formato de 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 alfa. Se convierte en formato de 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 formato de 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_LUMINANCE
Cada elemento es un único valor de luminancia. Se convierte en formato de 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 formato de 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 GL_TEXTURE_2D.
GL_INVALID_ENUM
format no era una constante acepada.
GL_INVALID_ENUM
type no era una constante acepada.
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
xoffset era menor que -b; o xoffset + width era mayor que w - b; o yoffset era menor que -b; o yoffset + height era mayor que h - b, donde w es el GL_TEXTURE_WIDTH, h es el GL_TEXTURE_HEIGHT, y b es el ancho de la GL_TEXTURE_BORDER de la imagen de textura que se está modificando.
Tenga en cuenta que w y h incluyen dos veces el ancho del borde.
GL_INVALID_VALUE
width era menor que b, donde b es el ancho de borde de la matriz de texturas.
GL_INVALID_VALUE
el borde no era cero o 1.
GL_INVALID_OPERATION
La matriz de texturas no se definió mediante una operación glTexImage2D anterior.
GL_INVALID_OPERATION
Se llamó a la función entre una llamada a glBegin y la llamada correspondiente a glEnd.

Comentarios

La texturización bidimensional para primitivos se habilita mediante glEnable y glDisable con el argumento GL_TEXTURE_2D. Durante la texturización, parte de una imagen de textura especificada se asigna a cada primitivo habilitado. Use la función glTexSubImage2D se usa para especificar una subimagen contigua de una imagen de textura bidimensional existente para la texturización.

Los elementos de textura a los que se hace referencia por píxeles reemplazan una región de la matriz de texturas existente por x índices de xoffset y xoffset + (ancho 1) incluidos e índices y de yoffset y yoffset + (alto 1) incluidos. Esta región no puede incluir ningún elemento de textura fuera del intervalo de la matriz de texturas especificada originalmente.

Especificar una subimagen con un ancho de cero no tiene ningún efecto y no genera ningún error.

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

En general, las imágenes 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.

Las funciones siguientes recuperan información relacionada con glTexSubImage2D:

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

glCopyTexImage1D

glCopyTexImage2D

glCopyTexSubImage1D

glCopyTexSubImage2D

glDrawPixels

glEnable

glFog

glGetTexImage

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexImage2D

glTexSubImage1D

glTexImage2D

glTexParameter