Share via


funzione glPixelTransferi

Le funzioni glPixelTransferf e glPixelTransferi impostano le modalità di trasferimento dei pixel.

Sintassi

void WINAPI glPixelTransferi(
   GLenum pname,
   GLint  param
);

Parametri

Pname

Nome simbolico del parametro di trasferimento pixel da impostare. La tabella seguente fornisce il tipo, il valore iniziale e l'intervallo di valori validi per ognuno dei parametri di trasferimento pixel impostati con glPixelTransfer.

Pname Tipo Valore iniziale Intervallo valido
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 numero intero 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

Valore impostato su pname .

Valore restituito

Questa funzione non restituisce un valore.

Commenti

La funzione glPixelTransfer imposta le modalità di trasferimento dei pixel che influiscono sull'operazione di glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glDrawPixels, glReadPixels, glTexImage1D, glTexImage2D, glTexSubImage1D e glTexSubImage2D. Gli algoritmi specificati dalle modalità di trasferimento dei pixel operano sui pixel dopo che vengono letti dalla cornicebuffer (glReadPixels e glCopyPixels) o decompressi dalla memoria client (glDrawPixels, glTexImage1D e glTexImage2D). Le operazioni di trasferimento dei pixel si verificano nello stesso ordine e nello stesso modo, indipendentemente dal comando che ha generato l'operazione pixel. Le modalità di archiviazione pixel (glPixelStore) controllano il decomprimemento dei pixel letti dalla memoria client e la compressione dei pixel da scrivere nella memoria client.

Le operazioni di trasferimento dei pixel gestiscono quattro tipi di pixel fondamentali: colore, indice dei colori, profondità e stencil. I pixel di colore sono costituiti da quattro valori a virgola mobile con dimensioni non specificate di mantissa e esponenti, ridimensionate in modo che 0,0 rappresenta l'intensità zero e 1,0 rappresenta l'intensità completa. Gli indici di colore comprendono un singolo valore a virgola fissa, con precisione non specificata a destra del punto binario. I pixel di profondità costituiscono un singolo valore a virgola mobile, con dimensioni mantissa e esponenti non specificate, ridimensionate in modo che 0,0 rappresenta il valore minimo del buffer di profondità e 1,0 rappresenta il valore massimo del buffer di profondità. Infine, i pixel stencil comprendono un singolo valore a virgola fissa, con precisione non specificata a destra del punto binario.

Le operazioni di trasferimento dei pixel eseguite sui quattro tipi di pixel di base sono le seguenti:

Tipo di pixel Operazione di trasferimento pixel
Color Ognuno dei quattro componenti di colore viene moltiplicato per un fattore di scala e quindi aggiunto a un fattore di pregiudizio. Vale a dire, il componente rosso viene moltiplicato per GL_RED_SCALE e quindi aggiunto a GL_RED_BIAS; il componente verde viene moltiplicato per GL_GREEN_SCALE e quindi aggiunto a GL_GREEN_BIAS; il componente blu viene moltiplicato per GL_BLUE_SCALE e quindi aggiunto a GL_BLUE_BIAS; e il componente alfa viene moltiplicato per GL_ALPHA_SCALE e quindi aggiunto a GL_ALPHA_BIAS. Dopo che tutti e quattro i componenti di colore vengono ridimensionati e con pregiudizi, ognuno viene bloccato all'intervallo [0,1]. Tutti i valori di scala e pregiudizi dei colori vengono specificati con glPixelTransfer.
Se GL_MAP_COLOR è true, ogni componente di colore viene ridimensionato in base alle dimensioni della mappa color-to-color corrispondente e quindi sostituita dal contenuto della mappa indicizzata dal componente ridimensionato. Ovvero, il componente rosso viene ridimensionato da GL_PIXEL_MAP_R_TO_R_SIZE e quindi sostituito dal contenuto di GL_PIXEL_MAP_R_TO_R indicizzato da se stesso. Il componente verde viene ridimensionato da GL_PIXEL_MAP_G_TO_G_SIZE e quindi sostituito dal contenuto di GL_PIXEL_MAP_G_TO_G indicizzato da se stesso. Il componente blu viene ridimensionato da GL_PIXEL_MAP_B_TO_B_SIZE e quindi sostituito dal contenuto di GL_PIXEL_MAP_B_TO_B indicizzato da se stesso. Il componente alfa viene ridimensionato da GL_PIXEL_MAP_A_TO_A_SIZE e quindi sostituito dal contenuto di GL_PIXEL_MAP_A_TO_A indicizzato da se stesso. Tutti i componenti presi dalle mappe vengono quindi bloccati all'intervallo [0,1]. GL_MAP_COLOR viene specificato con glPixelTransfer. Il contenuto delle varie mappe viene specificato con glPixelMap.
Indice colori Ogni indice di colore viene spostato a sinistra da GL_INDEX_SHIFT bit, riempiendo con zeri qualsiasi bit oltre il numero di bit frazionari trasportati dall'indice a virgola fissa. Se GL_INDEX_SHIFT è negativo, lo spostamento è verso destra, di nuovo zero riempito. GL_INDEX_OFFSET viene quindi aggiunto all'indice. GL_INDEX_SHIFT e GL_INDEX_OFFSET vengono specificati con glPixelTransfer.
A questo punto, l'operazione diverge a seconda del formato richiesto dei pixel risultanti. Se i pixel risultanti devono essere scritti in un buffer di indice colore o se vengono letti nuovamente nella memoria client in formato GL_COLOR_INDEX, i pixel continuano a essere considerati come indici. Se GL_MAP_COLOR è true, ogni indice viene mascherato da 2 ^ n 1, dove n è GL_PIXEL_MAP_I_TO_I_SIZE e quindi sostituito dal contenuto di GL_PIXEL_MAP_I_TO_I indicizzato dal valore mascherato. GL_MAP_COLOR viene specificato con glPixelTransfer. Il contenuto della mappa di indice viene specificato con glPixelMap.
Se i pixel risultanti devono essere scritti in un buffer di colori RGBA o se vengono letti nuovamente nella memoria client in un formato diverso da GL_COLOR_INDEX, i pixel vengono convertiti da indici a colori facendo riferimento alle quattro mappe 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. Prima di essere dereferenziato, l'indice viene mascherato da 2 n 1, dove n è GL_PIXEL_MAP_I_TO_R_SIZE per la mappa rossa, GL_PIXEL_MAP_I_TO_G_SIZE per la mappa verde, GL_PIXEL_MAP_I_TO_B_SIZE per la mappa blu e GL_PIXEL_MAP_I_TO_A_SIZE per la mappa alfa. Tutti i componenti acquisiti dalle mappe vengono quindi bloccati all'intervallo [0,1]. Il contenuto delle quattro mappe viene specificato con glPixelMap.
Profondità Ogni valore di profondità viene moltiplicato per GL_DEPTH_SCALE, aggiunto a GL_DEPTH_BIAS e quindi bloccato all'intervallo [0,1].
Stencil Ogni indice viene spostato GL_INDEX_SHIFT bit esattamente come è un indice di colore e quindi aggiunto a GL_INDEX_OFFSET. Se GL_MAP_STENCIL è true, ogni indice viene mascherato da 2n 1, dove n è GL_PIXEL_MAP_S_TO_S_SIZE, quindi sostituito dal contenuto di GL_PIXEL_MAP_S_TO_S indicizzato dal valore mascherato.

La funzione glPixelTransferf può essere usata per impostare qualsiasi parametro di trasferimento pixel. Se il tipo di parametro è Boolean, 0.0 implica false e qualsiasi altro valore implica true. Se pname è un parametro integer, param viene arrotondato all'intero più vicino.

Analogamente, glPixelTransferi può essere usato anche per impostare uno dei parametri di trasferimento pixel. I parametri booleani sono impostati su false se param è 0 e true in caso contrario. Il parametro param viene convertito in virgola mobile prima di essere assegnato a parametri con valori reali.

Se un comando glDrawPixels, glReadPixels, glCopyPixels, glTexImage1D o glTexImage2D viene inserito in un elenco di visualizzazione (vedere glNewList e glCallList), le impostazioni della modalità di trasferimento pixel vengono applicate quando viene eseguito l'elenco di visualizzazione sono quelle usate. Possono essere diversi dalle impostazioni durante la compilazione del comando nell'elenco di visualizzazione.

Le funzioni seguenti recuperano informazioni correlate a glPixelTransfer:

glGet con argomento GL_MAP_COLOR

glGet con argomento GL_MAP_STENCIL

glGet con argomento GL_INDEX_SHIFT

glGet con argomento GL_INDEX_OFFSET

glGet con argomento GL_RED_SCALE

glGet con argomento GL_RED_BIAS

glGet con argomento GL_GREEN_SCALE

glGet con argomento GL_GREEN_BIAS

glGet con argomento GL_BLUE_SCALE

glGet con argomento GL_BLUE_BIAS

glGet con argomento GL_ALPHA_SCALE

glGet con argomento GL_ALPHA_BIAS

glGet con argomento GL_DEPTH_SCALE

glGet con argomento GL_DEPTH_BIAS

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Gl.h
Libreria
Opengl32.lib
DLL
Opengl32.dll

Vedi anche

glBegin

glCallList

glCopyPixels

glDrawPixels

glEnd

glNewList

glPixelMap

glPixelStore

glPixelZoom

glReadPixels

glTexImage1D

glTexImage2D