glPixelStorei-Funktion
Legt die Pixelspeichermodi fest.
Syntax
void WINAPI glPixelStorei(
GLenum pname,
GLint param
);
Parameter
-
pname
-
Der symbolische Name des festzulegenden Parameters. Sechs der Speicherparameter beeinflussen, wie Pixeldaten an den Clientspeicher zurückgegeben werden, und sind daher nur für glReadPixels-Befehle von Bedeutung. Sie sind wie folgt:
Speicherparameter BESCHREIBUNG GL_PACK_SWAP_BYTES Wenn true, wird die Bytereihenfolge für Multibytefarbkomponenten, Tiefenkomponenten, Farbindizes oder Schablonenindizes umgekehrt. Das heißt, wenn eine Vier-Byte-Komponente aus Bytes b0, b1 , b2, b3 besteht, wird sie im Arbeitsspeicher als b3, b2, b1, b0 gespeichert, wenn GL_PACK_SWAP_BYTES true ist. GL_PACK_SWAP_BYTES hat keine Auswirkung auf die Speicherreihenfolge von Komponenten innerhalb eines Pixels, nur auf die Reihenfolge der Bytes innerhalb von Komponenten oder Indizes. Beispielsweise werden die drei Komponenten eines GL_RGB-Formatpixels unabhängig vom Wert von GL_PACK_SWAP_BYTES immer mit rotem, grünem zweiten und blauem Dritten gespeichert. GL_PACK_LSB_FIRST Wenn true, werden Bits innerhalb eines Byte von der geringsten bis zur höchsten Bedeutung sortiert. Andernfalls ist das erste Bit in jedem Byte das bedeutendste Bit. Dieser Parameter ist nur für Bitmapdaten von Bedeutung. GL_PACK_ROW_LENGTH Wenn größer als 0 (null) GL_PACK_ROW_LENGTH die Anzahl der Pixel in einer Zeile definiert. Wenn das erste Pixel einer Zeile an der Position p im Arbeitsspeicher platziert wird, wird die Position des ersten Pixels der nächsten Zeile abgerufen, indem Formel übersprungen wird, die [newline]-Komponenten oder Indizes, wobei n die Anzahl der Komponenten oder Indizes in einem Pixel, l die Anzahl der Pixel in einer Zeile ist (gl-pack-row-length, wenn sie größer als 0 ist, andernfalls das Width-Argument für die Pixelroutine), ein ist der Wert von gl-pack-alignment und s die Größe einer einzelnen Komponente (wenn ein<s, dann ist es so, als ob ein = s). bei 1-Bit-Werten wird die Position der nächsten Zeile abgerufen, indem Formel übersprungen wird,
-Komponenten oder -Indizes. Die Wortkomponente in dieser Beschreibung bezieht sich auf die Nichtindexwerte Rot, Grün, Blau, Alpha und Tiefe. Das Speicherformat GL_RGB enthält beispielsweise drei Komponenten pro Pixel: zuerst rot, dann grün und schließlich blau.GL_PACK_SKIP_PIXELS und
GL_PACK_SKIP_ROWSDiese Werte werden dem Programmierer als Benutzerfreundlichkeit zur Verfügung gestellt. sie bieten keine Funktionen, die nicht dupliziert werden können, indem einfach der zeiger erhöht wird, der an glReadPixels übergeben wird. Das Festlegen GL_PACK_SKIP_PIXELS auf i entspricht dem Inkrementieren des Zeigers um i n-Komponenten oder Indizes, wobei n die Anzahl der Komponenten oder Indizes in jedem Pixel ist. Das Festlegen GL_PACK_SKIP_ROWS auf j entspricht dem Inkrementieren des Zeigers um j k-Komponenten oder -Indizes, wobei k die Anzahl der Komponenten oder Indizes pro Zeile ist, wie oben im Abschnitt GL_PACK_ROW_LENGTH berechnet. GL_PACK_ALIGNMENT Gibt die Ausrichtungsanforderungen für den Anfang jeder Pixelzeile im Arbeitsspeicher an. Die zulässigen Werte sind 1 (Byteausrichtung), 2 (Zeilen ausgerichtet an geraden Byte), 4 (Wortausrichtung) und 8 (Zeilen beginnen an Doppelwortgrenzen). Die anderen sechs Speicherparameter beeinflussen, wie Pixeldaten aus dem Clientspeicher gelesen werden. Diese Werte sind für glDrawPixels, glTexImage1D, glTexImage2D, glBitmap und glPolygonStipple von Bedeutung. Dies sind:
Speicherparameter BESCHREIBUNG GL_UNPACK_SWAP_BYTES Wenn true, wird die Bytereihenfolge für Multibytefarbkomponenten, Tiefenkomponenten, Farbindizes oder Schablonenindizes umgekehrt. Das heißt, wenn eine Vier-Byte-Komponente aus Bytes b0, b1 , b2, b3 besteht, wird sie im Arbeitsspeicher als b3, b2, b1 , b0 gespeichert, wenn GL_UNPACK_SWAP_BYTES true ist. GL_UNPACK_SWAP_BYTES hat keine Auswirkungen auf die Speicherreihenfolge von Komponenten innerhalb eines Pixels, nur auf die Reihenfolge der Bytes innerhalb von Komponenten oder Indizes. Beispielsweise werden die drei Komponenten eines Pixels im GL_RGB-Format unabhängig vom Wert von GL_UNPACK_SWAP_BYTES immer mit rot erster, grüner Sekunde und blauem Dritten gespeichert. GL_UNPACK_LSB_FIRST Wenn true, werden Bits innerhalb eines Byte von der geringsten bis zur höchsten Bedeutung sortiert. Andernfalls ist das erste Bit in jedem Byte das bedeutendste Bit. Dies ist nur für Bitmapdaten von Bedeutung. GL_UNPACK_ROW_LENGTH Wenn größer als 0 (null) GL_UNPACK_ROW_LENGTH die Anzahl der Pixel in einer Zeile definiert. Wenn das erste Pixel einer Zeile an der Position p im Arbeitsspeicher platziert wird, wird die Position des ersten Pixels der nächsten Zeile abgerufen, indem Formel übersprungen wird, die [newline]-Komponenten oder Indizes, wobei n die Anzahl der Komponenten oder Indizes in einem Pixel, l die Anzahl der Pixel in einer Zeile ist (gl-pack-row-length, wenn sie größer als 0 ist, andernfalls das Width-Argument für die Pixelroutine), ein ist der Wert von gl-pack-alignment und s die Größe einer einzelnen Komponente (wenn ein<s, dann ist es so, als ob ein = s). bei 1-Bit-Werten wird die Position der nächsten Zeile abgerufen, indem Formel übersprungen wird,
-Komponenten oder -Indizes. Die Wortkomponente in dieser Beschreibung bezieht sich auf die Nichtindexwerte Rot, Grün, Blau, Alpha und Tiefe. Das Speicherformat GL_RGB enthält beispielsweise drei Komponenten pro Pixel: zuerst rot, dann grün und schließlich blau.GL_UNPACK_SKIP_PIXELS und
GL_UNPACK_SKIP_ROWSDiese Werte werden dem Programmierer als Benutzerfreundlichkeit zur Verfügung gestellt. Sie bieten keine Funktionen, die nicht dupliziert werden können, indem sie einfach den Zeiger erhöhen, der an glDrawPixels, glTexImage1D, glTexImage2D, glBitmap oder glPolygonStipple übergeben wird. Das Festlegen GL_UNPACK_SKIP_PIXELS auf i entspricht dem Inkrementieren des Zeigers um i n-Komponenten oder Indizes, wobei n die Anzahl der Komponenten oder Indizes in jedem Pixel ist. Das Festlegen GL_UNPACK_SKIP_ROWS auf j entspricht dem Erhöhen des Zeigers um j k-Komponenten oder -Indizes, wobei k die Anzahl der Komponenten oder Indizes pro Zeile ist, wie oben im Abschnitt GL_UNPACK_ROW_LENGTH berechnet. GL_UNPACK_ALIGNMENT Gibt die Ausrichtungsanforderungen für den Anfang jeder Pixelzeile im Arbeitsspeicher an. Die zulässigen Werte sind 1 (Byteausrichtung), 2 (Zeilen ausgerichtet an geraden Byte), 4 (Wortausrichtung) und 8 (Zeilen beginnen an Doppelwortgrenzen). -
param
-
Der Wert, auf den pname festgelegt ist.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Bemerkungen
Die glPixelStore-Funktion legt Pixelspeichermodi fest, die sich auf den Betrieb nachfolgender glDrawPixels und glReadPixels sowie auf das Entpacken von Polygonstipplemustern (siehe glPolygonStipple), Bitmaps (siehe glBitmap) und Texturmuster auswirken (siehe glTexImage1D, glTexImage2D, glTexSubImage1D und glTexSubImage2D).
Die folgende Tabelle enthält den Typ, den Anfangswert und den Bereich der gültigen Werte für jeden Speicherparameter, der mit glPixelStore festgelegt werden kann.
Pname | type | Anfangswert | Gültiger Bereich |
---|---|---|---|
GL_PACK_SWAP_BYTES | Boolean | false | true oder false |
GL_PACK_SWAP_BYTES | Boolean | false | true oder false |
GL_PACK_ROW_LENGTH | integer | 0 | [0,?) |
GL_PACK_SKIP_ROWS | integer | 0 | [0,?) |
GL_PACK_SKIP_PIXELS | integer | 0 | [0,?) |
GL_PACK_ALIGNMENT | integer | 4 | 1, 2, 4 oder 8 |
GL_UNPACK_SWAP_BYTES | Boolean | false | true oder false |
GL_UNPACK_LSB_FIRST | Boolean | false | true oder false |
GL_UNPACK_ROW_LENGTH | integer | 0 | [0,?) |
GL_UNPACK_SKIP_ROWS | integer | 0 | [0,?) |
GL_UNPACK_SKIP_PIXELS | integer | 0 | [0,?) |
GL_UNPACK_ALIGNMENT | integer | 4 | 1, 2, 4 oder 8 |
Die glPixelStoref-Funktion kann verwendet werden, um einen beliebigen Pixelspeicherparameter festzulegen. Wenn der Parametertyp Boolean ist und param 0.0 ist, ist der Parameter false. Andernfalls wird sie auf true festgelegt. Wenn pname ein ganzzahliger Typparameter ist, wird param auf die nächste ganze Zahl gerundet.
Ebenso kann die glPixelStorei-Funktion auch verwendet werden, um beliebige Pixelspeicherparameter 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.
Die Pixelspeichermodi, die wirksam sind, wenn glDrawPixels, glReadPixels, glTexImage1D, glTexImage2D, glBitmap oder glPolygonStipple in einer Anzeigeliste platziert wird, steuern die Interpretation von Speicherdaten. Die Pixelspeichermodi, die beim Ausführen einer Anzeigeliste wirksam sind, sind nicht signifikant.
Die folgenden Funktionen rufen Informationen im Zusammenhang mit glPixelStore ab:
glGet mit Argument GL_PACK_SWAP_BYTES
glGet mit Argument GL_PACK_LSB_FIRST
glGet mit argument GL_PACK_ROW_LENGTH
glGet mit Argument GL_PACK_SKIP_ROWS
glGet mit argument GL_PACK_SKIP_PIXELS
glGet mit Argument GL_PACK_ALIGNMENT
glGet mit Argument GL_UNPACK_SWAP_BYTES
glGet mit Argument GL_UNPACK_LSB_FIRST
glGet mit Argument GL_UNPACK_ROW_LENGTH
glGet mit argument GL_UNPACK_SKIP_ROWS
glGet mit Argument GL_UNPACK_SKIP_PIXELS
glGet mit Argument GL_UNPACK_ALIGNMENT
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 |
|