glTexImage
(Mehr Informationen/weitere Artikel) {{{1}}} |
Inhaltsverzeichnis
glTexImage
Name
glTexImage - Einstellungen zum Texturen zeichnen
Spezifikation
procedure glTexImage1D(target: TGLenum; level: TGLint; internalformat: TGLint; width: TGLsizei; border: TGLint; format: TGLenum; _type: TGLenum; const pixels: PGLvoid);
procedure glTexImage2D(target: TGLenum; level: TGLint; internalformat: TGLint; width: TGLsizei; height: TGLsizei; border: TGLint; format: TGLenum; _type: TGLenum; const pixels: PGLvoid);
procedure glTexImage3D(target: TGLenum; level: TGLint; internalformat: TGLint; width: TGLsizei; height: TGLsizei; depth: TGLsizei; border: TGLint; format: TGLenum; _type: TGLenum; const pixels: PGLvoid);
Parameter
target | Gibt an, welche Texture erreicht werden soll. GL_TEXTURE_2D wird akzeptiert. |
level | Gibt den Detailgrad für das gewünschte Bild an. level 0 ist das Basisbild. Level n ist die n-te Mipmap reduzierung des Bildes. |
components | 1 - für R || 2 für R und A || 3 für RGB || 4 für RGBA |
width, | Breite = Anzahl der Pixel pro Zeile muss als Wert 2^n (+ 2 * (border) ) für n Integerwerte haben. |
height, | Höhe = Anzahl der Zeilen muss als Wert 2^n (+ 2 * (border) ) für n Integerwerte haben |
depth, | Tiefe = Anzahl der "Scheiben" muss als Wert 2^n (+ 2 * (border) ) für n Integerwerte haben |
border, | Breite des Rahmens || 0 oder 1 |
format | Bestimmt das Format der Pixeldaten. Folgende symbolische Werte werden akzeptiert: GL_COLOR_INDEX, GL_STENCIL_INDEX, GL_DEPTH_COMPONENT, GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_RGBA, GL_LUMINANCE, und GL_LUMINANCE_ALPHA |
_type | Bestimmt den Pixeltyp für den Inhalt von pixels. Folgende Typen werden unterstützt: GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_BITMAP |
pixels | Die Texture-Image Daten vom Typ, der in format angegeben wurde ( Array wo die Pixel gespeichert sind ) |
Beschreibung
Texturierung bildet einen bestimmten Teil eines Texturbildes auf alle Grafikprimitiven ab für die Texturierung aktiviert ist.
Je nachdem welche Texturart aktiviert werden soll ruft man glEnable mit den Parametern GL_TEXTURE_1D, GL_TEXTURE_2D oder GL_TEXTURE_3D auf. Die Deaktivierung erfolgt entsprechend mittels glDisable.
Die Texturbilder werden durch die Funktionen glTexImage1D, glTexImage2D bzw. glTexImage3D definiert. Die Argumente der Funktionen beschreiben die Eigenschaften des Texturbildes wie z.B. Breite, Höhe, Tiefe (je nach Dimension), Breite des Randes, LOD-Nummer (siehe glTexParameter) und Anzahl der unterstützen Farbkomponenten. Die letzten 3 Argumente beschreiben wie das Bild im Speicher abgelegt wird. Die 3 Argumente sind identisch mit denen, die das Pixelformat bei glDrawPixels steuern.
Die Daten werden aus pixels als Sequenz von vorzeichenlosen oder -behafteten Byte-, Shortint- oder Longint-Werten oder als Fließkommazahlen einfacher Genauigkeit gelesen. Der Typ wird über type festgelegt.
Die ausgelesen Werte werden abhängig von format gruppiert zu Gruppen mit je einem, zwei, drei oder vier Werten. Diese Gruppen entsprechen einem Element.
Wenn type gleich GL_BITMAP ist, werden die Daten als Folge (orig.: "String") von vorzeichenlosen Bytewerten angesehen (wobei format GL_COLOR_INDEX sein muss). Jedes Byte des Datenblocks wird als Gruppe von 8 1-Bit Elementen interpretiert. Die Reihenfolge der Bits wird durch GL_UNPACK_LSB_FIRST (siehe glPixelStore) festgelegt.
Der format Parameter bestimmt die Zusammenstellung der Elemente aus pixels. Folgende 9 möglichen Werte kann format haben:
Hinweise
glTexImage3D war bis zu OpenGL 1.2 noch eine Erweiterung. Deswegen bei manchen Chipsätzen nur als glTexImage3DEXT verfügbar.
Fehlermeldungen
GL_INVALID_ENUM wird generiert wenn target kein GL_TEXTURE_2D ist.
GL_INVALID_ENUM wird generiert wenn falsches format angegeben wurde.
GL_INVALID_ENUM wird generiert wenn falscher type angegeben wurde.
GL_INVALID_ENUM wird generiert wenn GL_BITMAP als type und kein GL_COLOR_INDEX als format angegeben wurde.
GL_INVALID_VALUE wird generiert wenn level kleiner 0 oder größer ld(max) ist, wobei max der Rückgabewert von GL_MAX_TEXTURE_SIZE ist. (ld = Logarithmus Dualis = Basis 2).
GL_INVALID_VALUE wird generiert wenn für components was anderes als 1, 2, 3 oder 4 angegeben wurde.
GL_INVALID_VALUE wird generiert wenn width oder height kleiner als 0 oder größer als 2 + GL_MAX_TEXTURE_SIZE ist, oder die Bedingung 2^k + 2 * (border) (k=Integerwerte) nich erfüllt.
GL_INVALID_VALUE wenn border nicht 0 oder 1 ist.
GL_INVALID_OPERATION wird generiert wenn glTexImage2D in einem glBegin- und glEnd-Block ausgeführt wird.
Siehe auch
glTexEnv, glTexGen, glTexImage3DEXT, glTexSubImage1D, glTexSubImage2D, glTexSubImage3D, glTexParameter, glTexCoord