Freigeben über


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 die Position des ersten Pixels der nächsten Zeile in GL_PACK_ROW_LENGTH. [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, die die Position der nächsten Zeile in GL_PACK_ROW_LENGTH.
-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_ROWS
Diese 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 die Position des ersten Pixels der nächsten Zeile in GL_UNPACK_ROW_LENGTH. [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, die die Position der nächsten Zeile in GL_UNPACK_ROW_LENGTH.
-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_ROWS
Diese 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
Gl.h
Bibliothek
Opengl32.lib
DLL
Opengl32.dll

Weitere Informationen

glBegin

glBitmap

glDrawPixels

glEnd

glPixelMap

glPixelTransfer

glPixelZoom

glPolygonStipple

glReadPixels

glTexImage1D

glTexImage2D