glPixelTransferi-Funktion

Die Funktionen glPixelTransferf und glPixelTransferi legen die Pixelübertragungsmodi fest.

Syntax

void WINAPI glPixelTransferi(
   GLenum pname,
   GLint  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 sind.

Pname type 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, glTexSubImage1D und glTexSubImage2D auswirken. Die Algorithmen, die durch Pixelübertragungsmodi angegeben werden, arbeiten mit Pixeln, nachdem sie aus dem Framebuffer (glReadPixels und glCopyPixels) gelesen oder aus dem Clientspeicher entpackt wurden (glDrawPixels, glTexImage1D und glTexImage2D). Pixelübertragungsvorgänge erfolgen in derselben Reihenfolge und auf die gleiche Weise, unabhängig vom Befehl, der zum Pixelvorgang geführt hat. Die Pixelspeichermodi (glPixelStore) steuern das Entpacken von Pixeln, die aus dem Clientspeicher gelesen werden, und das Packen 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 angegebenen Mantisse- und Exponentengrößen, skaliert so, dass 0,0 die Intensität null und 1,0 die volle Intensität darstellt. Farbindizes bestehen aus einem einzelnen Festpunktwert mit nicht angegebener Genauigkeit rechts vom binären Punkt. Tiefenpixel bestehen aus einem einzelnen Gleitkommawert mit nicht angegebenen Mantisse- und Exponentengrößen, skaliert so, 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 voreingenommen wurden, wird jede auf 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 von 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 von GL_PIXEL_MAP_B_TO_B ersetzt, die selbst indiziert werden. Die Alphakomponente wird von GL_PIXEL_MAP_A_TO_A_SIZE skaliert und dann durch den Inhalt der selbst indizierten GL_PIXEL_MAP_A_TO_A ersetzt. Alle aus den Karten entnommenen Komponenten werden dann auf den Bereich [0,1] eingespannt. 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
Gl.h
Bibliothek
Opengl32.lib
DLL
Opengl32.dll

Siehe auch

glBegin

glCallList

glCopyPixels

glDrawPixels

glEnd

glNewList

glPixelMap

glPixelStore

glPixelZoom

glReadPixels

glTexImage1D

glTexImage2D