glTexImage1D function

A função glTexImage1D especifica uma imagem de textura unidimensional.

Sintaxe

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

Parâmetros

destino

A textura de destino. Precisa ser GL_TEXTURE_1D.

level

O número do nível de detalhe. O nível 0 é o nível de imagem base. O nível n é a nTh imagem de redução do mipmap.

internalformat

Especifica o número de componentes de cor na textura. Deve ser 1, 2, 3 ou 4, ou uma das seguintes 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_RGB, GL_R3_G3_B2, 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 ou GL_RGBA16.

width

A largura da imagem da textura. Deve ser 2n + 2( border ) para alguns inteiros n. A altura da imagem da textura é 1.

border

A largura da borda. Deve ser 0 ou 1.

format

O formato dos dados de pixel. Pode assumir um dos nove valores simbólicos.

Valor Significado
GL_COLOR_INDEX
Cada elemento é um valor individual, um índice de cores. É convertido em ponto fixo (com um número não especificado de 0 bits à direita do ponto binário), deslocado para a esquerda ou direita, dependendo do valor e do sinal de GL_INDEX_SHIFT e adicionado a GL_INDEX_OFFSET (confira glPixelTransfer). O índice resultante é convertido em um conjunto de componentes de cor por meio das tabelas GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G, GL_PIXEL_MAP_I_TO_B e GL_PIXEL_MAP_I_TO_A e fixado ao intervalo [0,1].
GL_RED
Cada elemento é um componente vermelho individual. É convertido em ponto flutuante e montado em um elemento RGBA anexando 0.0 para verde e azul e 1.0 para alfa. Em seguida, cada componente é multiplicado pelo fator de escala com sinal GL_c_SCALE, adicionado ao desvio com sinal GL_c_BIAS e fixado ao intervalo [0,1] (confira glPixelTransfer).
GL_GREEN
Cada elemento é um componente verde individual. É convertido em ponto flutuante e montado em um elemento RGBA anexando 0.0 para vermelho e azul e 1.0 para alfa. Em seguida, cada componente é multiplicado pelo fator de escala com sinal GL_c_SCALE, adicionado ao desvio com sinal GL_c_BIAS e fixado ao intervalo [0,1] (confira glPixelTransfer).
GL_BLUE
Cada elemento é um componente azul individual. É convertido em ponto flutuante e montado em um elemento RGBA anexando 0.0 para vermelho e verde e 1.0 para alfa. Em seguida, cada componente é multiplicado pelo fator de escala com sinal GL_c_SCALE, adicionado ao desvio com sinal GL_c_BIAS e fixado ao intervalo [0,1] (confira glPixelTransfer).
GL_ALPHA
Cada elemento é um componente vermelho individual. É convertido em ponto flutuante e montado em um elemento RGBA anexando 0.0 para vermelho, verde e azul. Em seguida, cada componente é multiplicado pelo fator de escala com sinal GL_c_SCALE, adicionado ao desvio com sinal GL_c_BIAS e fixado ao intervalo [0,1] (confira glPixelTransfer).
GL_RGB
Cada elemento é um triplo RGB. Ele é convertido em ponto flutuante e montado em um elemento RGBA pela anexação de 1.0 para alfa. Em seguida, cada componente é multiplicado pelo fator de escala com sinal GL_c_SCALE, adicionado ao desvio com sinal GL_c_BIAS e fixado ao intervalo [0,1] (confira glPixelTransfer).
GL_RGBA
Cada elemento é um elemento RGBA completo. Ele é convertido em ponto flutuante. Em seguida, cada componente é multiplicado pelo fator de escala com sinal GL_c_SCALE, adicionado ao desvio com sinal GL_c_BIAS e fixado ao intervalo [0,1] (confira glPixelTransfer).
GL_BGR_EXT
Cada pixel é um grupo de três componentes nesta ordem: azul, verde, vermelho.
GL_BGR_EXT fornece um formato que corresponde ao layout de memória de bitmaps independentes de dispositivo (DIBs) do Windows. Assim, seus aplicativos podem usar os mesmos dados com chamadas de função do Windows e chamadas de função de pixel do OpenGL.
GL_BGRA_EXT
Cada pixel é um grupo de quatro componentes nesta ordem: azul, verde, vermelho, alfa.
GL_BGRA_EXT fornece um formato que corresponde ao layout de memória de bitmaps independentes de dispositivo (DIBs) do Windows. Assim, seus aplicativos podem usar os mesmos dados com chamadas de função do Windows e chamadas de função de pixel do OpenGL.
GL_LUMINANCE
Cada elemento é um valor de luminância individual. Ele é convertido em ponto flutuante e montado em um elemento RGBA pela replicação do valor de luminância três vezes para vermelho, verde e azul, e pela anexação de 1.0 para alfa. Em seguida, cada componente é multiplicado pelo fator de escala com sinal GL_c_SCALE, adicionado ao desvio com sinal GL_c_BIAS e fixado ao intervalo [0,1] (confira glPixelTransfer).
GL_LUMINANCE_ALPHA
Cada elemento é um par luminância/alfa. Ele é convertido em ponto flutuante e montado em um elemento RGBA pela replicação do valor de luminância três vezes para vermelho, verde e azul. Em seguida, cada componente é multiplicado pelo fator de escala com sinal GL_c_SCALE, adicionado ao desvio com sinal GL_c_BIAS e fixado ao intervalo [0,1] (confira glPixelTransfer).

tipo

O tipo dos dados de pixel. São aceitos os seguintes valores simbólicos: GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT e GL_FLOAT.

pixels

Um ponteiro para os dados da imagem na memória.

Retornar valor

Essa função não retorna um valor.

Códigos do Erro

Os códigos de erro a seguir podem ser recuperados pela função glGetError.

Nome Significado
GL_INVALID_ENUM
target não era GL_TEXTURE.
GL_INVALID_ENUM
format não era uma constante format aceita. Somente constantes format diferentes de GL_STENCIL_INDEX e GL_DEPTH_COMPONENT são aceitas. Consulte a descrição do parâmetro de format para obter uma lista de valores possíveis.
GL_INVALID_ENUM
type não era uma constante type.
GL_INVALID_ENUM
type era GL_BITMAP e format não era GL_COLOR_INDEX.
GL_INVALID_VALUE
level era menor que zero ou maior que log2max, em que max era o valor retornado de GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE
internalformat não era 1, 2, 3 ou 4.
GL_INVALID_VALUE
width era menor que zero ou maior que 2 + GL_MAX_TEXTURE_SIZE, ou não podia ser representada como 2n + 2(border) para um valor inteiro de n.
GL_INVALID_VALUE
border não era 0 ou 1.
GL_INVALID_OPERATION
A função foi chamada entre uma chamada a glBegin e a chamada correspondente a glEnd.

Comentários

A função glTexImage1D especifica uma imagem de textura unidimensional. A texturização mapeia uma parte de uma imagem de textura especificada em cada primitiva gráfica para a qual a texturização está habilitada. A texturização unidimensional é habilitada e desabilitada por meio de glEnable e glDisable com argumento GL_TEXTURE_1D.

As imagens de textura são definidas com glTexImage1D. Os argumentos descrevem os parâmetros da imagem de textura, como largura, largura da borda, número de nível de detalhe (consulte glTexParameter) e número de componentes de cor fornecidos. Os três últimos argumentos descrevem a forma como a imagem é representada na memória. Esses argumentos são idênticos aos formatos de pixel usados para glDrawPixels.

Os dados são lidos a partir de pixels como uma sequência de bytes, curtos ou longos assinados ou não assinados, ou valores de ponto flutuante de precisão única, dependendo do tipo. Esses valores são agrupados em conjuntos de um, dois, três ou quatro valores, dependendo do formato, para formar elementos. Se o tipo for GL_BITMAP, os dados serão considerados como uma cadeia de caracteres de bytes não assinados (e o formato deverá ser GL_COLOR_INDEX). Cada byte de dados é tratado como oito elementos de 1 bit, com a ordem de bits determinada por GL_UNPACK_LSB_FIRST (consulte glPixelStore).

Uma imagem de textura pode ter até quatro componentes por elemento de textura, dependendo dos componentes. Uma imagem de textura de um componente usa apenas o componente vermelho da cor RGBA extraída de pixels. Uma imagem de dois componentes usa os valores R e A. Uma imagem de três componentes usa os valores R, G e B. Uma imagem de quatro componentes usa todos os componentes RGBA.

A texturização não tem nenhum efeito no modo de índice de cores.

A imagem de textura pode ser representada pelos mesmos formatos de dados que os pixels em um comando glDrawPixels, exceto que GL_STENCIL_INDEX e GL_DEPTH_COMPONENT não podem ser usados. Os modos glPixelStore e glPixelTransfer afetam as imagens de textura exatamente da mesma forma que afetam glDrawPixels.

Uma imagem de textura com largura zero indica a textura nula. Caso a textura nula seja especificada para o nível de detalhe 0, é como se a texturização estivesse desabilitada.

As seguintes funções recuperam informações relacionadas a glTexImageID:

glGetTexImage

glIsEnabled com o argumento GL_TEXTURE_1D

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho
Gl.h
Biblioteca
Opengl32.lib
DLL
Opengl32.dll

Confira também

glBegin

glCopyPixels

glCopyTexImage1D

glCopyTexImage2D

glCopyTexSubImage1D

glCopyTexSubImage2D

glDrawPixels

glEnd

glFog

glGetTexImage

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage2D

glTexSubImage1D

glTexSubImage2D

glTexParameter