glCopyColorTable

Aus DGL Wiki
Wechseln zu: Navigation, Suche

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

glGetColorTable

glGetColorTableParameter


Siehe auch

glColorTable, glColorTableParameter, glReadPixels