glPixelTransferf-Funktion
Die Funktionen glPixelTransferf und glPixelTransferi legen die Pixelübertragungsmodi fest.
Syntax
void WINAPI glPixelTransferf(
GLenum pname,
GLfloat param
);
Parameter
-
pname
-
Der symbolische Name des festzulegenden Pixelübertragungsparameters. Die folgende Tabelle enthält den Typ, den Anfangswert und den Bereich der gültigen Werte für die einzelnen Pixelübertragungsparameter, die mit glPixelTransfer festgelegt werden.
Pname Typ Anfangswert Gültiger Bereich 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
-
Der Wert, auf den pname festgelegt ist.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Bemerkungen
Die glPixelTransfer-Funktion legt Pixelübertragungsmodi fest, die sich auf den Betrieb der nachfolgenden Befehle glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glDrawPixels, glReadPixels, glTexImage1D, glTexImage2D, glTexImage1D, glTexSubImage1D und glTexSubImage2D auswirken. Die Algorithmen, die durch Pixelübertragungsmodi angegeben werden, arbeiten auf Pixeln, nachdem sie aus dem Framebuffer (glReadPixels und glCopyPixels) gelesen oder aus dem Clientspeicher (glDrawPixels, glTexImage1D und glTexImage2D) entpackt wurden. Pixelübertragungsvorgänge erfolgen unabhängig vom Befehl, der zum Pixelvorgang geführt hat, in derselben Reihenfolge und in der gleichen Weise. Pixelspeichermodi (glPixelStore) steuern das Entpacken von Pixeln, die aus dem Clientspeicher gelesen werden, und die Verpackung von Pixeln, die zurück in den Clientspeicher geschrieben werden.
Pixelübertragungsvorgänge behandeln vier grundlegende Pixeltypen: Farbe, Farbindex, Tiefe und Schablone. Farbpixel bestehen aus vier Gleitkommawerten mit nicht spezifizierten Mantissa- und Exponentengrößen, die so skaliert sind, dass 0,0 null Intensität und 1,0 die volle Intensität darstellt. Farbindizes umfassen einen einzelnen Festpunktwert mit nicht angegebener Genauigkeit rechts neben dem Binären Punkt. Tiefenpixel bestehen aus einem einzelnen Gleitkommawert mit nicht angegebenen Mantissa- und Exponentengrößen, die so skaliert sind, dass 0,0 den minimalen Tiefenpufferwert und 1,0 den maximalen Tiefenpufferwert darstellt. Schließlich bestehen Schablonenpixel aus einem einzelnen Festpunktwert mit nicht angegebener Genauigkeit rechts neben dem Binären Punkt.
Die Pixelübertragungsvorgänge, die für die vier grundlegenden Pixeltypen ausgeführt werden, sind wie folgt:
Pixeltyp | Pixelübertragungsvorgang |
---|---|
Color | Jede der vier Farbkomponenten wird mit einem Skalierungsfaktor multipliziert und dann einem Biasfaktor hinzugefügt. Das heißt, die rote Komponente wird mit GL_RED_SCALE multipliziert und dann GL_RED_BIAS hinzugefügt. die grüne Komponente wird mit GL_GREEN_SCALE multipliziert und dann GL_GREEN_BIAS hinzugefügt. Die blaue Komponente wird mit GL_BLUE_SCALE multipliziert und dann GL_BLUE_BIAS hinzugefügt. und die Alphakomponente wird mit GL_ALPHA_SCALE multipliziert und dann GL_ALPHA_BIAS hinzugefügt. Nachdem alle vier Farbkomponenten skaliert und verzerrt sind, wird jede an den Bereich [0,1] geklemmt. Alle Farbskala- und Biaswerte werden mit glPixelTransfer angegeben. Wenn GL_MAP_COLOR true ist, wird jede Farbkomponente nach der Größe der entsprechenden Farb-zu-Farbe-Karte skaliert und dann durch den Inhalt dieser Karte ersetzt, die von der skalierten Komponente indiziert wird. Das heißt, die rote Komponente wird durch GL_PIXEL_MAP_R_TO_R_SIZE skaliert und dann durch den Inhalt von GL_PIXEL_MAP_R_TO_R ersetzt, die selbst indiziert werden. Die grüne Komponente wird durch GL_PIXEL_MAP_G_TO_G_SIZE skaliert und dann durch den Inhalt von GL_PIXEL_MAP_G_TO_G ersetzt, die selbst indiziert werden. Die blaue Komponente wird durch GL_PIXEL_MAP_B_TO_B_SIZE skaliert und dann durch den Inhalt der selbst indizierten GL_PIXEL_MAP_B_TO_B ersetzt. Die Alphakomponente wird durch GL_PIXEL_MAP_A_TO_A_SIZE skaliert und dann durch den Inhalt der GL_PIXEL_MAP_A_TO_A ersetzt, die selbst indiziert werden. Alle Aus den Karten entnommenen Komponenten werden dann an den Bereich [0,1] geklemmt. GL_MAP_COLOR wird mit glPixelTransfer angegeben. Der Inhalt der verschiedenen Karten wird mit glPixelMap angegeben. |
Farbindex | Jeder Farbindex wird von GL_INDEX_SHIFT Bits nach links verschoben und füllt mit Nullen alle Bits, die über die Anzahl der Bruchbits hinausgehen, die vom Fixpunktindex getragen werden. Wenn GL_INDEX_SHIFT negativ ist, ist die Verschiebung nach rechts, wieder 0 gefüllt. GL_INDEX_OFFSET wird dann dem Index hinzugefügt. GL_INDEX_SHIFT und GL_INDEX_OFFSET werden mit glPixelTransfer angegeben. Ab diesem Punkt unterscheidet sich der Vorgang abhängig vom erforderlichen Format der resultierenden Pixel. Wenn die resultierenden Pixel in einen Farbindexpuffer geschrieben oder in GL_COLOR_INDEX Format in den Clientspeicher zurückgelesen werden, werden die Pixel weiterhin als Indizes behandelt. Wenn GL_MAP_COLOR true ist, wird jeder Index durch 2 ^ n1 maskiert, wobei n GL_PIXEL_MAP_I_TO_I_SIZE ist, und dann durch den Inhalt von GL_PIXEL_MAP_I_TO_I ersetzt, der durch den maskierten Wert indiziert wird. GL_MAP_COLOR wird mit glPixelTransfer angegeben. Der Inhalt der Indexzuordnung wird mit glPixelMap angegeben. Wenn die resultierenden Pixel in einen RGBA-Farbpuffer geschrieben oder in einem anderen Format als GL_COLOR_INDEX in den Clientspeicher zurückgelesen werden, werden die Pixel von Indizes in Farben konvertiert, indem auf die vier Karten GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G, GL_PIXEL_MAP_I_TO_B und GL_PIXEL_MAP_I_TO_A. Bevor er abgeleitet wird, wird der Index durch 2 n1 maskiert, wobei n für die rote Karte GL_PIXEL_MAP_I_TO_R_SIZE ist, GL_PIXEL_MAP_I_TO_G_SIZE für die grüne Karte, GL_PIXEL_MAP_I_TO_B_SIZE für die blaue Karte und GL_PIXEL_MAP_I_TO_A_SIZE für die Alphakarte. Alle Aus den Karten entnommenen Komponenten werden dann an den Bereich [0,1] geklemmt. Der Inhalt der vier Karten wird mit glPixelMap angegeben. |
Tiefe | Jeder Tiefenwert wird mit GL_DEPTH_SCALE multipliziert, GL_DEPTH_BIAS hinzugefügt und dann an den Bereich [0,1] geklemmt. |
Stencil | Jeder Index wird genau wie ein Farbindex GL_INDEX_SHIFT Bits verschoben und dann GL_INDEX_OFFSET hinzugefügt. Wenn GL_MAP_STENCIL true ist, wird jeder Index durch 2n 1 maskiert, wobei n GL_PIXEL_MAP_S_TO_S_SIZE ist, und dann durch den Inhalt von GL_PIXEL_MAP_S_TO_S ersetzt, der durch den maskierten Wert indiziert wird. |
Die Funktion glPixelTransferf kann verwendet werden, um einen beliebigen Pixelübertragungsparameter festzulegen. Wenn der Parametertyp boolean ist, impliziert 0.0 false und jeder andere Wert impliziert true. Wenn pname ein ganzzahliger Parameter ist, wird param auf die nächste ganze Zahl gerundet.
Ebenso kann glPixelTransferi auch verwendet werden, um beliebige Pixelübertragungsparameter festzulegen. Boolesche Parameter werden auf false festgelegt, wenn param 0 und andernfalls true ist. Der param-Parameter wird in gleitkommafähige Parameter konvertiert, bevor er realwertigen Parametern zugewiesen wird.
Wenn ein Befehl glDrawPixels, glReadPixels, glCopyPixels, glTexImage1D oder glTexImage2D in einer Anzeigeliste platziert wird (siehe glNewList und glCallList), werden die beim Ausführen der Anzeigeliste wirksamen Einstellungen für den Pixelübertragungsmodus verwendet. Sie unterscheiden sich möglicherweise von den Einstellungen, wenn der Befehl in die Anzeigeliste kompiliert wurde.
Die folgenden Funktionen rufen Informationen im Zusammenhang mit glPixelTransfer ab:
glGet mit Argument GL_MAP_COLOR
glGet mit Argument GL_MAP_STENCIL
glGet mit argument GL_INDEX_SHIFT
glGet mit Argument GL_INDEX_OFFSET
glGet mit Argument GL_RED_SCALE
glGet mit argument GL_RED_BIAS
glGet mit Argument GL_GREEN_SCALE
glGet mit Argument GL_GREEN_BIAS
glGet mit argument GL_BLUE_SCALE
glGet mit argument GL_BLUE_BIAS
glGet mit Argument GL_ALPHA_SCALE
glGet mit Argument GL_ALPHA_BIAS
glGet mit Argument GL_DEPTH_SCALE
glGet mit Argument GL_DEPTH_BIAS
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Windows 2000 Server [nur Desktop-Apps] |
Header |
|
Bibliothek |
|
DLL |
|