Função glTexSubImage2D
A função glTexSubImage2D especifica uma parte de uma imagem de textura unidimensional existente. Não é possível definir uma nova textura com glTexSubImage2D.
Sintaxe
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
-
A textura de destino. Precisa ser GL_TEXTURE_2D.
-
level
-
O número do nível de detalhe. O nível 0 é a imagem base. O nível n é a enésima imagem de redução do mipmap.
-
xoffset
-
Um deslocamento texel na direção x dentro da matriz de textura.
-
yoffset
-
Um deslocamento texel na direção y dentro da matriz de textura.
-
width
-
A largura da subimagem de textura.
-
altura
-
A altura da subimagem de textura.
-
format
-
O formato dos dados de pixel. Pode assumir um dos valores simbólicos a seguir.
Valor Significado - GL_COLOR_INDEX
Cada elemento é um valor individual, um índice de cores. Ele é convertido no formato de ponto fixo (com um número não especificado de 0 bits à direita do ponto binário), deslocado para a esquerda ou para a 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. Ele é convertido no formato de ponto flutuante e montado em um elemento RGBA pela anexação de 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. Ele é convertido no formato de ponto flutuante e montado em um elemento RGBA pela anexação de 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. Ele é convertido no formato de ponto flutuante e montado em um elemento RGBA pela anexação de 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 alfa individual. Ele é convertido no formato de ponto flutuante e montado em um elemento RGBA pela anexação de 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 no formato de 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_LUMINANCE
Cada elemento é um valor de luminância individual. Ele é convertido no formato de 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 no formato de 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 de dados 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 |
---|---|
|
O target não era GL_TEXTURE_2D. |
|
O format não era uma constante aceita. |
|
O type não era uma constante aceita. |
|
O type era GL_BITMAP e o format não era GL_COLOR_INDEX. |
|
O level era menor que zero ou maior que log2 max, sendo max o valor retornado de GL_MAX_TEXTURE_SIZE. |
|
xoffset era menor que -b; ou xoffset + width era maior que w - b; ou yoffset era menor que -b; ou yoffset + height era maior que h - b, sendo w a GL_TEXTURE_WIDTH, h a GL_TEXTURE_HEIGHT e b a largura da GL_TEXTURE_BORDER da imagem de textura que está sendo modificada. Observe que w e h incluem o dobro da largura da borda. |
|
A width era menor que b, sendo b a borda da matriz de textura. |
|
A border não era zero ou 1. |
|
A matriz de textura não foi definida por uma operação glTexImage2D anterior. |
|
A função foi chamada entre uma chamada a glBegin e a chamada correspondente a glEnd. |
Comentários
A texturização bidimensional de uma primitiva é habilitada por meio de glEnable e glDisable com o argumento GL_TEXTURE_2D. Durante a texturização, parte de uma imagem de textura especificada é mapeada em cada primitiva habilitada. Use a função glTexSubImage2D para especificar uma subimagem contígua de uma imagem de textura bidimensional existente para texturização.
Os texels referenciados por pixels substituem uma região da matriz de textura existente por x índices de xoffset e xoffset + (width 1) inclusive e y índices de yoffset e yoffset + (height 1) inclusive. Essa região não pode incluir nenhum texel fora do intervalo da matriz de textura especificada originalmente.
A especificação de uma subimagem com uma width igual a zero não tem nenhum efeito e não gera um erro.
A texturização não tem nenhum efeito no modo de índice de cores.
Em geral, as imagens de textura podem ser representadas pelos mesmos formatos de dados que os pixels em um comando glDrawPixels, com a exceção de 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.
As seguintes funções recuperam informações relacionadas a glTexSubImage2D:
glIsEnabled com o argumento GL_TEXTURE_2D
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 |
|
Biblioteca |
|
DLL |
|