glCopyColorTable: Unterschied zwischen den Versionen
(→Änderungen) |
|||
Zeile 78: | Zeile 78: | ||
− | |||
− | |||
− | |||
− | |||
== Fehlermeldungen == | == Fehlermeldungen == |
Aktuelle Version vom 31. Januar 2006, 14:12 Uhr
Inhaltsverzeichnis
glCopyColorTable
Name
glCopyColorTable - Kopiert Pixel in eine Farbtabelle
Delphi-Spezifikation
procedure glCopyColorTable(target : GLenum; internalformat : GLenum; x : GLint; y : GLint; width : GLSizei)
Parameter
target | Die Ziel-Farbtabelle. Muss GL_COLOR_TABLE, GL_POST_CONVOLUTION_COLOR_TABLE oder GL_POST_COLOR_MATRIX_COLOR_TABLE. |
---|---|
internalformat | Die interne Speicherart der Textur. Muss eine der folgenden Konstanten sein: GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12, GL_ALPHA16, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, GL_LUMINANCE12, GL_LUMINANCE16, GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12, GL_LUMINANCE16_ALPHA16, GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8, GL_INTENSITY12, GL_INTENSITY16, GL_R3_G3_B2, GL_RGB, GL_RGB4, GL_RGB5, GL_RGB8, GL_RGB10, GL_RGB12, GL_RGB16, GL_RGBA, GL_RGBA2, GL_RGBA4, GL_RGB5_A1, GL_RGBA8, GL_RGB10_A2, GL_RGBA12 oder GL_RGBA16. |
x | Die x-Koordinate der linken unteren Ecke des Pixelrechtecks, das in die Farbtabelle übernommen werden soll. |
y | Die y-Koordinate der linken unteren Ecke des Pixelrechtecks, das in die Farbtabelle übernommen werden soll. |
width | Die Breite des Pixelrechtecks. |
Beschreibung
glCopyColorTable lädt eine Farbtabelle mit Pixeln aus dem aktuellen GL_READ_BUFFER (im Gegensatz dazu glColorTable, die aus dem Hauptspeicher lädt).
Das bildschirmbezogene Pixelrechteck mit dem linken, unteren Eck bei [x, y] mit der Breite width und der Höhe 1 wird in die Farbtabelle geladen. Wenn sich Pixel innerhalb dieser Region sich außerhalb des Fensters befinden, sind die Werte für diese Pixel undefiniert.
Die Pixel im Rechteck werden genauso bearbeitet, wie wenn glReadPixels aufgerufen worden wäre. internalformat wird auf RGBA gesetzt, aber die Operation hält an, bevor die finale Konvertierung nach RGBA durchgeführt wird.
Die vier Skalierungs- und Bias-Parameter, die für die Tabelle definiert wurden, werden dann verwendet, um die RGBA Komponenten für jedes Pixel zu Skalieren und Biasen. Die Skalierungs- und Bias-Parameter werden mit glColorTableParameter festgelegt.
Anschließend werden die RGBA-Werte an den [0,1]-Bereich angepasst. Jedes dieser Pixel wird dann in das interne Format - angegeben mit internalformat - konvertiert. Diese Konvertierung mappt ganz einfach die Komponenten-Werte des Pixels (r, g, b und a) in die Werte, die intern verwendet werden (r, g, b, a, Belichtungsstärke und Intensität). Das Mappen verläuft folgendermaßen:
Internes Format | Gemapped auf |
---|---|
GL_ALPHA | A=Alpha |
GL_LUMINANC | R=Luminance |
GL_LUMINANCE_ALPHA | A=Alpha, R=Luminance |
GL_INTENSITY | R=Intensity |
GL_RGB | R=Red, G=Green, B=Blue |
GL_RGBA | R=Red, G=Green, B=Blue, A=Alpha |
Schlussendlich werden die roten, grünen, blauen, Alpha-, Beleuchtungsstärken- und/oder Intensitätskomponenten der resultierenden Pixel in der Farbtabelle gespeichert. Sie bilden eine eindimensionale Tabelle mit Werten im Bereich 0 bis width - 1.
Hinweise
glCopyColorTable steht nur zur Verfügung, wenn GL_ARB_imaging in dem String enthalten ist, der von glGetString mit dem Argument GL_EXTENSIONS zurückgeliefert wird.
Fehlermeldungen
GL_INVALID_ENUM wird generiert, wenn target keiner der zulässigen Werte ist.
GL_INVALID_VALUE wird generiert, wenn width kleiner als Null ist.
GL_INVALID_VALUE wird generiert, wenn internalformat keiner der zulässigen Werte ist.
GL_TABLE_TOO_LARGE wird generiert, wenn die angeforderte Farbtabelle zu groß für die unterstützte OpenGL-Version bzw die Grafikkarte ist.
GL_INVALID_OPERATION wird generiert, wenn glCopyColorTable innerhalb eines glBegin-glEnd Blocks aufgerufen wird.
Zugehörige Wertrückgaben