glTexImage: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Beschreibung)
()
Zeile 67: Zeile 67:
  
 
== Beschreibung ==  
 
== Beschreibung ==  
''glTexImage'' nimmt die wichtige Einstellungen vor, die zum Zeichnen einer Textur unbedingt benötigt werden ( siehe Parameterliste ).
+
Texturierung bildet einen bestimmten Teil eines Texturbildes auf alle [[Primitive|Grafikprimitiven]] ab für die Texturierung aktiviert ist.
Gezeichnet werden die Texturen im ''glBegin()'' und ''glEnd()'' Block, immer abwechselnd mit [[glTexCoord]] und [[glVertex]].
+
 
Wenn als ''type'' GL_BITMAP gewählt wird, bestehen die Daten aus einer Reihe von '''unsigned bytes''' und als ''format'' muss GL_COLOR_INDEX eingestellt sein.<br>
+
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]].
Um das Zeichnen einer 2D Textur zu aktivieren nutzen sie [[glEnable]]('''GL_TEXTURE_2D''').
+
 
 +
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. <br>
 +
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:
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
  
  

Version vom 13. April 2005, 16:00 Uhr

Hinweis: Dieser Artikel ist noch unvollständig.
(Mehr Informationen/weitere Artikel)

{{{1}}}

Incomplete.jpg

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