glDrawPixels-Funktion
Die glDrawPixels-Funktion schreibt einen Block von Pixeln in den Framepuffer.
Syntax
void WINAPI glDrawPixels(
GLsizei width,
GLsizei height,
GLenum format,
GLenum type,
const GLvoid *pixels
);
Parameter
-
width
-
Die Breite des Pixelrechtecks, das in den Framepuffer geschrieben wird.
-
height
-
Die Höhendimension des Pixelrechtecks, das in den Framepuffer geschrieben wird.
-
format
-
Das Format der Pixeldaten. Zulässige symbolische Konstanten sind wie folgt.
Wert Bedeutung - GL_COLOR_INDEX
Jedes Pixel ist ein einzelner Wert, ein Farbindex. - Die glDrawPixels-Funktion konvertiert jedes Pixel in ein Festkommaformat mit einer nicht angegebenen Anzahl von Bits rechts neben dem Binärpunkt, unabhängig vom Arbeitsspeicherdatentyp. Gleitkommawerte werden in echte Festkommawerte konvertiert. Die glDrawPixels-Funktion konvertiert ganzzahlige Daten mit Vorzeichen und ohne Vorzeichen, wobei alle Bruchbits auf 0 (null) festgelegt sind. Die Funktion konvertiert Bitmapdaten entweder in 0.0 oder 1.0.
- Die glDrawPixels-Funktion verschiebt jeden Festkommaindex um GL_INDEX_SHIFT Bits nach links und fügt ihn GL_INDEX_OFFSET hinzu. Wenn GL_INDEX_SHIFT negativ ist, erfolgt die Verschiebung nach rechts. In beiden Fällen füllen null Bits andernfalls nicht angegebene Bitpositionen im Ergebnis aus.
- Im RGBA-Modus konvertiert glDrawPixels den resultierenden Index mithilfe der Tabellen 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 in ein RGBA-Pixel. Wenn im Farbindexmodus und GL_MAP_COLOR true ist, wird der Index durch den Wert ersetzt, auf den glDrawPixels in der Nachschlagetabelle verweist GL_PIXEL_MAP_I_TO_I.
- Unabhängig davon, ob der Index ersetzt wird oder nicht, ist der ganzzahlige Teil des Indexes ANDmit 2b bis 1, wobei b die Anzahl der Bits in einem Farbindexpuffer ist.
- Die resultierenden Indizes oder RGBA-Farben werden dann in Fragmente konvertiert, indem die aktuelle Rasterposition z-coordinate und Texturkoordinaten an jedes Pixel angefügt und dem n-tenFragment dann x- und y-Fensterkoordinaten zugewiesen werden, sodass x? = xr + n mod width
y? = yr + n/width
wobei (xr , yr ) die aktuelle Rasterposition ist. - Die glDrawPixels-Funktion behandelt diese Pixelfragmente genauso wie die Fragmente, die durch Rasterung von Punkten, Linien oder Polygonen generiert werden. Es wendet Texturzuordnung, Oberfläche und alle Fragmentvorgänge an, bevor die Fragmente in den Framepuffer geschrieben werden.
- GL_STENCIL_INDEX
Jedes Pixel ist ein einzelner Wert, ein Schablonenindex. - Die glDrawPixels-Funktion konvertiert sie in ein Festkommaformat mit einer nicht angegebenen Anzahl von Bits rechts neben dem Binärpunkt, unabhängig vom Arbeitsspeicherdatentyp. Gleitkommawerte werden in echte Festkommawerte konvertiert. Die glDrawPixels-Funktion konvertiert ganzzahlige Daten mit Vorzeichen und ohne Vorzeichen, wobei alle Bruchbits auf 0 (null) festgelegt sind. Bitmapdaten werden entweder in 0.0 oder 1.0 konvertiert.
- Die glDrawPixels-Funktion verschiebt jeden Festkommaindex um GL_INDEX_SHIFT Bits nach links und fügt ihn GL_INDEX_OFFSET hinzu. Wenn GL_INDEX_SHIFT negativ ist, erfolgt die Verschiebung nach rechts. In beiden Fällen füllen null Bits andernfalls nicht angegebene Bitpositionen im Ergebnis aus.
- Wenn GL_MAP_STENCIL true ist, wird der Index durch den Wert ersetzt, auf den glDrawPixels in der GL_PIXEL_MAP_S_TO_S der Nachschlagetabelle verweist.
- Unabhängig davon, ob die Nachschlageersetzung des Indexes erfolgt oder nicht, wird der ganzzahlige Teil des Indexesmit 2b bis 1 ed, wobei b die Anzahl der Bits im Schablonenpuffer ist. Die resultierenden Schablonenindizes werden dann in den Schablonenpuffer geschrieben, sodass der n-tenIndex an Position xgeschrieben wird. = xr + n mod width
y? = yr + n/width
wobei (xr , yr ) die aktuelle Rasterposition ist. Nur der Pixelbesitztest, der Scissor-Test und die Schablonenschreibmaske wirken sich auf diese Schreibvorgänge aus.
- GL_DEPTH_COMPONENT
Jedes Pixel ist eine Einzeltiefekomponente. - Die glDrawPixels-Funktion konvertiert Gleitkommadaten direkt in ein internes Gleitkommaformat mit nicht angegebener Genauigkeit. Ganzzahlige Daten mit Vorzeichen werden linear dem internen Gleitkommaformat zugeordnet, sodass der positivste darstellbare ganzzahlige Wert 1,0 und der negativste darstellbare Wert -1,0 zugeordnet wird. Ganzzahlige Daten ohne Vorzeichen werden ähnlich zugeordnet: Der größte ganzzahlige Wert wird 1,0 und 0,0 zugeordnet.
- Die glDrawPixels-Funktion multipliziert den resultierenden Gleitkommatiefewert mit GL_DEPTH_SCALE und fügt ihn GL_DEPTH_BIAS hinzu. Das Ergebnis wird an den Bereich [0,1] klammern.
- Die glDrawPixels-Funktion konvertiert die resultierenden Tiefenkomponenten in Fragmente, indem sie die aktuelle Rasterpositionsfarbe oder den Farbindex und die Texturkoordinaten an jedes Pixel anfügt und dann dem n-ten Fragment x- und y-Fensterkoordinaten zuweist, sodass x? = xr + n mod width
y? = yr + n/width
wobei ( xr ,yr ) die aktuelle Rasterposition ist. - Diese Pixelfragmente werden dann genau wie die Fragmente behandelt, die durch Rastern von Punkten, Linien oder Polygonen generiert werden. Die glDrawPixels-Funktion wendet Texturzuordnung, Oberfläche und alle Fragmentvorgänge an, bevor die Fragmente in den Framepuffer geschrieben werden.
- GL_RGBA
Jedes Pixel ist eine Gruppe mit vier Komponenten in dieser Reihenfolge: Rot, Grün, Blau, Alpha. - Die glDrawPixels-Funktion konvertiert Gleitkommawerte direkt in ein internes Gleitkommaformat mit nicht angegebener Genauigkeit. Ganzzahlige Werte mit Vorzeichen werden linear dem internen Gleitkommaformat zugeordnet, sodass der positivste darstellbare ganzzahlige Wert 1,0 und der negativste darstellbare Wert -1,0 zugeordnet wird. Ganzzahlige Daten ohne Vorzeichen werden ähnlich zugeordnet: Der größte ganzzahlige Wert wird 1,0 und 0,0 zugeordnet.
- Die glDrawPixels-Funktion multipliziert die resultierenden Gleitkommafarbwerte mit GL_c_SCALE und fügt sie GL_c_BIAS hinzu, wobei c für die jeweiligen Farbkomponenten ROT, GRÜN, BLAU und ALPHA ist. Die Ergebnisse werden an den Bereich [0,1] klammern.
- Wenn GL_MAP_COLOR true ist, skaliert glDrawPixels jede Farbkomponente nach der Größe der GL_PIXEL_MAP_c_TO_c Nachschlagetabelle und ersetzt dann die Komponente durch den Wert, auf den sie in dieser Tabelle verweist. c ist R, G, B bzw. A.
- Die glDrawPixels-Funktion konvertiert die resultierenden RGBA-Farben in Fragmente, indem sie die aktuelle Rasterposition z-coordinate und Texturkoordinaten an jedes Pixel anfügt und dann dem n-tenFragment x- und y-Fensterkoordinaten zuweist, sodass x? = xr + n mod width
y? = yr + n /width
wobei (xr ,yr ) die aktuelle Rasterposition ist. - Diese Pixelfragmente werden dann genau wie die Fragmente behandelt, die durch Rastern von Punkten, Linien oder Polygonen generiert werden. Die glDrawPixels-Funktion wendet Texturzuordnung, Oberfläche und alle Fragmentvorgänge an, bevor die Fragmente in den Framepuffer geschrieben werden.
- GL_RED
Jedes Pixel ist eine einzelne rote Komponente.
Die glDrawPixels-Funktion konvertiert diese Komponente in das interne Gleitkommaformat auf die gleiche Weise wie die rote Komponente eines RGBA-Pixels und konvertiert sie dann in ein RGBA-Pixel, wobei grün und blau auf 0,0 und alpha auf 1,0 festgelegt ist. Nach dieser Konvertierung wird das Pixel so behandelt, als ob es als RGBA-Pixel gelesen worden wäre.- GL_GREEN
Jedes Pixel ist eine einzelne grüne Komponente.
Die glDrawPixels-Funktion konvertiert diese Komponente in das interne Gleitkommaformat auf die gleiche Weise wie die grüne Komponente eines RGBA-Pixels und konvertiert sie dann in ein RGBA-Pixel, wobei rot und blau auf 0,0 und alpha auf 1,0 festgelegt ist. Nach dieser Konvertierung wird das Pixel so behandelt, als ob es als RGBA-Pixel gelesen worden wäre.- GL_BLUE
Jedes Pixel ist eine einzelne blaue Komponente.
Die glDrawPixels-Funktion konvertiert diese Komponente in das interne Gleitkommaformat auf die gleiche Weise wie die blaue Komponente eines RGBA-Pixels und konvertiert sie dann in ein RGBA-Pixel, wobei Rot und Grün auf 0,0 und alpha auf 1,0 festgelegt ist. Nach dieser Konvertierung wird das Pixel so behandelt, als ob es als RGBA-Pixel gelesen worden wäre.- GL_ALPHA
Jedes Pixel ist eine einzelne Alphakomponente.
Die glDrawPixels-Funktion konvertiert diese Komponente in das interne Gleitkommaformat auf die gleiche Weise wie die Alphakomponente eines RGBA-Pixels und konvertiert sie dann in ein RGBA-Pixel, wobei rot, grün und blau auf 0,0 festgelegt ist. Nach dieser Konvertierung wird das Pixel so behandelt, als ob es als RGBA-Pixel gelesen worden wäre.- GL_RGB
Jedes Pixel ist eine Gruppe von drei Komponenten in dieser Reihenfolge: rot, grün, blau. Die glDrawPixels-Funktion konvertiert jede Komponente in das interne Gleitkommaformat auf die gleiche Weise wie die roten, grünen und blauen Komponenten eines RGBA-Pixels. Die Dreierfarbe wird in ein RGBA-Pixel konvertiert, wobei alpha auf 1,0 festgelegt ist. Nach dieser Konvertierung wird das Pixel so behandelt, als ob es als RGBA-Pixel gelesen worden wäre. - GL_LUMINANCE
Jedes Pixel ist eine einzelne Leuchtdichtekomponente.
Die glDrawPixels-Funktion konvertiert diese Komponente in das interne Gleitkommaformat auf die gleiche Weise wie die rote Komponente eines RGBA-Pixels und konvertiert sie dann in ein RGBA-Pixel, wobei rot, grün und blau auf den konvertierten Leuchtwert und alpha auf 1,0 festgelegt ist. Nach dieser Konvertierung wird das Pixel so behandelt, als ob es als RGBA-Pixel gelesen worden wäre.- GL_LUMINANCE_ALPHA
Jedes Pixel ist eine Gruppe von zwei Komponenten in dieser Reihenfolge: Leuchtdichte, Alpha.
Die glDrawPixels-Funktion konvertiert die beiden Komponenten in das interne Gleitkommaformat auf die gleiche Weise wie die rote Komponente eines RGBA-Pixels und konvertiert sie dann in ein RGBA-Pixel, wobei rot, grün und blau auf den konvertierten Leuchtwert und alpha auf den konvertierten Alphawert festgelegt ist. Nach dieser Konvertierung wird das Pixel so behandelt, als ob es als RGBA-Pixel gelesen worden wäre.- GL_BGR_EXT
Jedes Pixel ist eine Gruppe von drei Komponenten in dieser Reihenfolge: blau, grün, rot.
GL_BGR_EXT stellt ein Format bereit, das dem Speicherlayout von Windows geräteunabhängigen Bitmaps (DIBs) entspricht. Daher können Ihre Anwendungen die gleichen Daten mit Windows Funktionsaufrufen und OpenGL-Pixelfunktionsaufrufen verwenden.- GL_BGRA_EXT
Jedes Pixel ist eine Gruppe von vier Komponenten in dieser Reihenfolge: blau, grün, rot, alpha.
GL_BGRA_EXT stellt ein Format bereit, das dem Speicherlayout von Windows geräteunabhängigen Bitmaps (DIBs) entspricht. Daher können Ihre Anwendungen die gleichen Daten mit Windows Funktionsaufrufen und OpenGL-Pixelfunktionsaufrufen verwenden. -
type
-
Der Datentyp für Pixel. Im Folgenden sind die akzeptierten symbolischen Konstanten und ihre Bedeutungen.
Wert Bedeutung - GL _ UNSIGNED _ BYTE
8-Bit-Ganzzahl ohne Vorzeichen - GL _ BYTE
Ganze 8-Bit-Zahl mit Vorzeichen - GL _ BITMAP
Einzelne Bits in 8-Bit-Ganzzahlen ohne Vorzeichen - GL _ UNSIGNED _ SHORT
16-Bit-Ganzzahl ohne Vorzeichen - GL _ SHORT
Ganze 16-Bit-Zahl mit Vorzeichen - GL _ UNSIGNED _ INT
32-Bit Ganzzahl ohne Vorzeichen - GL _ INT
32-bit integer - GL _ FLOAT
Gleitkomma mit einfacher Genauigkeit -
Pixel
-
Ein Zeiger auf die Pixeldaten.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Fehlercodes
Die folgenden Fehlercodes können von der glGetError-Funktion abgerufen werden.
| Name | Bedeutung |
|---|---|
|
Die Breite oder Höhe war negativ. |
|
Entweder format oder type war kein akzeptierter Wert. |
|
Format: GL _ RED, GL _ GREEN, GL _ BLUE, GL _ ALPHA, GL _ RGB, GL _ RGBA, GL _ BGR _ EXT, GL _ BGRA _ EXT, GL _ LUMINANCE oder GL _ LUMINANCE _ ALPHA, und OpenGL befand sich im Farbindexmodus. |
|
Der Typ war GL _ BITMAP, und das Format war weder GL COLOR INDEX noch _ GL _ _ STENCIL _ INDEX. |
|
Format war GL _ STENCIL _ INDEX, und es gab keinen Schablonenpuffer. |
|
Die Funktion wurde zwischen einem Aufruf von glBegin und dem entsprechenden Aufruf von glEndaufgerufen. |
Hinweise
Die glDrawPixels-Funktion liest Pixeldaten aus dem Arbeitsspeicher und schreibt sie relativ zur aktuellen Rasterposition in den Framepuffer. Verwenden Sie glRasterPos, um die aktuelle Rasterposition festzulegen, und verwenden Sie glGet mit dem Argument GL _ CURRENT RASTER _ _ POSITION, um die Rasterposition abzufragen.
Mehrere Parameter definieren die Codierung von Pixeldaten im Arbeitsspeicher und steuern die Verarbeitung der Pixeldaten, bevor sie im Framepuffer platziert werden. Diese Parameter werden mit vier Funktionen festgelegt: glPixelStore, glPixelTransfer, glPixelMapund glPixelZoom. In diesem Thema werden die Auswirkungen von vielen, aber nicht allen Parametern, die von diesen vier Funktionen angegeben werden, auf glDrawPixels beschrieben.
Daten werden aus Pixeln als Sequenz von Bytes mit oder ohne Vorzeichen, Shorts mit vorzeichen oder ohne Vorzeichen, ganze Zahlen mit oder ohne Vorzeichen oder Gleitkommawerte mit einfacher Genauigkeit gelesen, je nach Typ. Jedes dieser Bytes, Shorts, ganzen Zahlen oder Gleitkommawerte wird je nach Format als eine Farb- oder Tiefenkomponente oder als ein Index interpretiert. Indizes werden immer einzeln behandelt. Farbkomponenten werden wiederum basierend auf dem Format als Gruppen von einem, zwei, drei oder vier Werten behandelt. Sowohl einzelne Indizes als auch Gruppen von Komponenten werden als Pixel bezeichnet. Wenn der Typ GL BITMAP _ ist, müssen die Daten nicht signierte Bytes sein, und das Format muss entweder GL COLOR INDEX oder _ GL _ _ STENCIL _ INDEX sein. Jedes Byte ohne Vorzeichen wird als acht 1-Bit-Pixel behandelt, wobei die Bitreihenfolge durch GL UNPACK LSB FIRST bestimmt wird _ _ _ (siehe glPixelStore).
Die Breite nach Höhe Pixel werden aus dem Arbeitsspeicher gelesen, beginnend bei Position Pixel. Standardmäßig werden diese Pixel von benachbarten Speicherspeicherorten übernommen, mit der Ausnahme, dass der Lesezeiger nach dem Lesen aller Pixelbreite auf die nächste 4-Byte-Grenze erweitert wird. Die glPixelStore-Funktion gibt die 4-Byte-Zeilenausrichtung mit dem Argument GL _ UNPACK _ ALIGNMENT an. Sie können sie auf 1, 2, 4 oder 8 Bytes festlegen. Andere Pixelspeicherparameter geben unterschiedliche Lesezeigerverbesserungen an, sowohl vor dem Lesen des ersten Pixels als auch nach dem Lesen aller Pixel mit Breite. Die glPixelStore-Funktion arbeitet auf grundlage der Werte mehrerer Parameter, die von glPixelTransfer und glPixelMap angegeben werden, auf die einzelnen Pixel der Breite nach Höhe, die sie aus dem Arbeitsspeicher liest. Die Details dieser Vorgänge sowie der Zielpuffer, in den die Pixel gezeichnet werden, sind spezifisch für das Format der Pixel, wie im Format angegeben.
Bei der bisher beschriebenen Rasterung wird ein Pixelzoomfaktor von 1,0 angenommen. Wenn Sie glPixelZoom verwenden, um die Zoomfaktoren "x" und "y Pixel" zu ändern, werden Pixel wie folgt in Fragmente konvertiert. Wenn (xr,yr) die aktuelle Rasterposition ist und sich ein bestimmtes Pixel in der n-ten Spalte und in der m-ten Zeile des Pixelrechtecks befindet, werden Fragmente für Pixel generiert, deren Mittelpunkte sich im Rechteck mit Ecken an befinden.
(xr + zoom? n, yr + zoomy m)
(xr + zoom? (n + 1), yr + zoomy (m + 1))
where zoom? ist der Wert von GL _ ZOOM _ X, und zoomy ist der Wert von GL _ ZOOM _ Y.
Die folgenden Funktionen rufen Informationen im Zusammenhang mit glDrawPixels ab:
glGet mit argument GL _ CURRENT _ RASTER _ POSITION
glGet mit argument GL _ CURRENT RASTER POSITION _ _ _ VALID
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 |
|