Función glPixelTransferi
Las funciones glPixelTransferf y glPixelTransferi establecen modos de transferencia de píxeles.
Sintaxis
void WINAPI glPixelTransferi(
GLenum pname,
GLint param
);
Parámetros
-
pname
-
Nombre simbólico del parámetro de transferencia de píxeles que se va a establecer. En la tabla siguiente se proporciona el tipo, el valor inicial y el intervalo de valores válidos para cada uno de los parámetros de transferencia de píxeles que se establecen con glPixelTransfer.
Pname Tipo Valor inicial Intervalo válido GL_MAP_COLOR Boolean false true/false GL_MAP_STENCIL Boolean false true/false GL_INDEX_SHIFT integer 0 (8,8) GL_INDEX_OFFSET integer 0 (8,8) GL_RED_SCALE integer 1.0 (8,8) GL_GREEN_SCALE FLOAT 1.0 (8,8) GL_BLUE_SCALE FLOAT 1.0 (8,8) GL_ALPHA_SCALE FLOAT 1.0 (8,8) GL_DEPTH_SCALE FLOAT 1.0 (8,8) GL_RED_BIAS FLOAT 0,0 (8,8) GL_GREEN_BIAS FLOAT 0,0 (8,8) GL_BLUE_BIAS FLOAT 0,0 (8,8) GL_ALPHA_BIAS FLOAT 0,0 (8,8) GL_DEPTH_BIAS FLOAT 0,0 (8,8) -
param
-
Valor en el que se establece pname .
Valor devuelto
Esta función no devuelve ningún valor.
Observaciones
La función glPixelTransfer establece modos de transferencia de píxeles que afectan al funcionamiento de los siguientes comandos glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glDrawPixels, glReadPixels, glTexImage1D, glTexImage2D, glTexSubImage1D y glTexSubImage2D . Los algoritmos especificados por los modos de transferencia de píxeles funcionan en píxeles después de leerlos desde el framebuffer (glReadPixels y glCopyPixels) o desempaquetados de la memoria del cliente (glDrawPixels, glTexImage1D y glTexImage2D). Las operaciones de transferencia de píxeles se realizan en el mismo orden y de la misma manera, independientemente del comando que dio lugar a la operación de píxeles. Los modos de almacenamiento de píxeles (glPixelStore) controlan el desempaquetado de píxeles que se leen de la memoria del cliente y el empaquetado de píxeles que se vuelven a escribir en la memoria del cliente.
Las operaciones de transferencia de píxeles controlan cuatro tipos de píxeles fundamentales: color, índice de color, profundidad y galería de símbolos. Los píxeles de color se componen de cuatro valores de punto flotante con tamaños de mantisa y exponente no especificados, escalados de forma que 0,0 representa la intensidad cero y 1,0 representa la intensidad completa. Los índices de color componen un único valor de punto fijo, con precisión no especificada a la derecha del punto binario. Los píxeles de profundidad componen un único valor de punto flotante, con tamaños de mantisa y exponente no especificados, escalados de forma que 0,0 representa el valor mínimo del búfer de profundidad y 1,0 representa el valor máximo del búfer de profundidad. Por último, los píxeles de galería de símbolos componen un único valor de punto fijo, con precisión no especificada a la derecha del punto binario.
Las operaciones de transferencia de píxeles realizadas en los cuatro tipos de píxeles básicos son las siguientes:
Tipo de píxel | Operación de transferencia de píxeles |
---|---|
Color | Cada uno de los cuatro componentes de color se multiplica por un factor de escala y, a continuación, se agrega a un factor de sesgo. Es decir, el componente rojo se multiplica por GL_RED_SCALE y luego se agrega a GL_RED_BIAS; el componente verde se multiplica por GL_GREEN_SCALE y luego se agrega a GL_GREEN_BIAS; el componente azul se multiplica por GL_BLUE_SCALE y, a continuación, se agrega a GL_BLUE_BIAS; y el componente alfa se multiplica por GL_ALPHA_SCALE y, a continuación, se agrega a GL_ALPHA_BIAS. Después de escalar y sesgar los cuatro componentes de color, cada uno se sujeta al intervalo [0,1]. Todos los valores de escala y sesgo de color se especifican con glPixelTransfer. Si GL_MAP_COLOR es true, cada componente de color se escala según el tamaño del mapa de color a color correspondiente y, a continuación, se reemplaza por el contenido de ese mapa indexado por el componente escalado. Es decir, el componente rojo se escala por GL_PIXEL_MAP_R_TO_R_SIZE y, a continuación, se reemplaza por el contenido de GL_PIXEL_MAP_R_TO_R indexado por sí mismo. El componente verde se escala por GL_PIXEL_MAP_G_TO_G_SIZE y, a continuación, se reemplaza por el contenido de GL_PIXEL_MAP_G_TO_G indexado por sí mismo. El componente azul se escala por GL_PIXEL_MAP_B_TO_B_SIZE y, a continuación, se reemplaza por el contenido de GL_PIXEL_MAP_B_TO_B indexado por sí mismo. El componente alfa se escala por GL_PIXEL_MAP_A_TO_A_SIZE y, a continuación, se reemplaza por el contenido de GL_PIXEL_MAP_A_TO_A indexado por sí mismo. Todos los componentes tomados de los mapas se sujetan al intervalo [0,1]. GL_MAP_COLOR se especifica con glPixelTransfer. El contenido de los distintos mapas se especifica con glPixelMap. |
Índice de color | Cada índice de color se desplaza a la izquierda por GL_INDEX_SHIFT bits, rellenando con ceros cualquier bits más allá del número de bits de fracción llevados por el índice de punto fijo. Si GL_INDEX_SHIFT es negativo, el desplazamiento está a la derecha, de nuevo cero relleno. GL_INDEX_OFFSET se agrega al índice. GL_INDEX_SHIFT y GL_INDEX_OFFSET se especifican con glPixelTransfer. Desde este punto, la operación difiere según el formato necesario de los píxeles resultantes. Si los píxeles resultantes se van a escribir en un búfer de índice de color o si se leen de nuevo a la memoria del cliente en formato GL_COLOR_INDEX, los píxeles se siguen tratando como índices. Si GL_MAP_COLOR es true, cada índice se enmascara por 2 ^ n 1, donde n es GL_PIXEL_MAP_I_TO_I_SIZE y, a continuación, se reemplaza por el contenido de GL_PIXEL_MAP_I_TO_I indexado por el valor enmascarado. GL_MAP_COLOR se especifica con glPixelTransfer. El contenido del mapa de índice se especifica con glPixelMap. Si los píxeles resultantes se van a escribir en un búfer de color RGBA, o si se leen de vuelta a la memoria del cliente en un formato distinto de GL_COLOR_INDEX, los píxeles se convierten de índices a colores haciendo referencia a los cuatro mapas 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. Antes de desreferenciarse, el índice se enmascara en 2 n 1, donde n es GL_PIXEL_MAP_I_TO_R_SIZE para el mapa rojo, GL_PIXEL_MAP_I_TO_G_SIZE para el mapa verde, GL_PIXEL_MAP_I_TO_B_SIZE para el mapa azul y GL_PIXEL_MAP_I_TO_A_SIZE para el mapa alfa. Todos los componentes tomados de los mapas se sujetan al intervalo [0,1]. El contenido de los cuatro mapas se especifica con glPixelMap. |
Profundidad | Cada valor de profundidad se multiplica por GL_DEPTH_SCALE, se agrega a GL_DEPTH_BIAS y, a continuación, se sujeta al intervalo [0,1]. |
Stencil | Cada índice se desplaza GL_INDEX_SHIFT bits igual que un índice de color y, a continuación, se agrega a GL_INDEX_OFFSET. Si GL_MAP_STENCIL es true, cada índice se enmascara en 2n 1, donde n es GL_PIXEL_MAP_S_TO_S_SIZE y, a continuación, se reemplaza por el contenido de GL_PIXEL_MAP_S_TO_S indexado por el valor enmascarado. |
La función glPixelTransferf se puede usar para establecer cualquier parámetro de transferencia de píxeles. Si el tipo de parámetro es Boolean, 0.0 implica false y cualquier otro valor implica true. Si pname es un parámetro entero, el parámetro se redondea al entero más cercano.
Del mismo modo, glPixelTransferi también se puede usar para establecer cualquiera de los parámetros de transferencia de píxeles. Los parámetros booleanos se establecen en false si el parámetro es 0 y true de lo contrario. El parámetro param se convierte en punto flotante antes de asignarse a parámetros con valores reales.
Si un comando glDrawPixels, glReadPixels, glCopyPixels, glTexImage1D o glTexImage2D se coloca en una lista de visualización (vea glNewList y glCallList), la configuración del modo de transferencia de píxeles en vigor cuando se ejecuta la lista de visualización son las que se usan. Pueden ser diferentes de la configuración cuando el comando se compiló en la lista de visualización.
Las siguientes funciones recuperan información relacionada con glPixelTransfer:
glGet con GL_MAP_COLOR de argumentos
glGet con GL_MAP_STENCIL de argumentos
glGet con GL_INDEX_SHIFT de argumentos
glGet con GL_INDEX_OFFSET de argumentos
glGet con GL_RED_SCALE de argumentos
glGet con GL_RED_BIAS de argumentos
glGet con GL_GREEN_SCALE de argumentos
glGet con GL_GREEN_BIAS de argumentos
glGet con GL_BLUE_SCALE de argumentos
glGet con GL_BLUE_BIAS de argumentos
glGet con GL_ALPHA_SCALE de argumentos
glGet con GL_ALPHA_BIAS de argumentos
glGet con GL_DEPTH_SCALE de argumentos
glGet con GL_DEPTH_BIAS de argumentos
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado |
|
Biblioteca |
|
Archivo DLL |
|