glTexSubImage: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Siehe auch)
K (GlTexSubImage wurde nach glTexSubImage verschoben)
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
= glTexSubImage =
+
{{SammelArtikel}}
 
+
*[[glTexSubImage1D]]
<br>
+
*[[glTexSubImage2D]]
== Name ==
+
*[[glTexSubImage3D]]
'''glTexSubImage1D, glTexSubImage2D, glTexSubImage3D''' - ersetzen einen ein-, zwei-, bzw. dreidimensionalen Texturbereich mit neuen Daten.
 
 
 
<br>
 
 
 
== Delphi-Spezifikation ==
 
 
 
procedure '''glTexSubImage1D'''(''target'': TGLenum; ''level'': TGLint;
 
                          ''xoffset'': TGLint;
 
                          ''width'': TGLsizei;
 
                          ''format'': TGLenum; ''_type'': TGLenum;
 
                          const ''pixels'': PGLvoid);
 
procedure '''glTexSubImage2D'''(''target'': TGLenum; ''level'': TGLint;
 
                          ''xoffset'': TGLint; ''yoffset'': TGLint;
 
                          ''width'': TGLsizei; ''height'': TGLsizei;
 
                          ''format'': TGLenum; ''_type'': TGLenum;
 
                          const ''pixels'': PGLvoid);
 
procedure '''glTexSubImage3D'''(''target'': TGLenum; ''level'': TGLint;
 
                          ''xoffset'': TGLint; ''yoffset'': TGLint; ''zoffset'': TGLint;
 
                          ''width'': TGLsizei; ''height'': TGLsizei; ''depth'': TGLsizei;
 
                          ''format'': TGLenum; ''_type'': TGLenum;
 
                          const ''pixels'': PGLvoid);
 
 
 
<br>
 
 
 
== Parameter ==
 
 
 
{| border="1" rules="all"
 
! ''target''
 
| Legt die Zieltextur fest. Die Zieltextur muss die selbe Dimension wie glTexSubImage haben. (Also z.B. GL_TEXTURE_2D bei einem Aufruf von glTexSubImage2D.)
 
|-
 
! ''level''
 
| Bestimmt die Level-Of-Detail Nummer. 0 ist das Ausgangsbild. Level ''n'' stellt die ''n''te [[Mipmap|MipMapstufe]] des Ausgangsbildes dar.
 
|-
 
! ''xoffset'', ''yoffset'', ''zoffset''
 
| Bestimmt die Koordinaten des Ankerpunktes an dem der zu ersetzende Texturbereich beginnt. ''yoffset'' ist ab glTexSubImage2D vorhanden, ''zoffset'' ab glTexSubImage3D.
 
|-
 
! ''width'', ''height'', ''depth''
 
| Bestimmt die Breite, Höhe (Nur glTexSubImage2D und glTexSubImage3D) und Tiefe (Nur glTexSubImage3D) des zu ersetzenden Texturbereichs.
 
|-
 
! ''format''
 
| Bestimmt das Format der Pixeldaten. Folgende Konstanten werden akzeptiert: '''GL_COLOR_INDEX, GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_BGR, GL_RGBA, GL_BGRA, GL_LUMINANCE''' und '''GL_LUMINANCE_ALPHA'''.
 
|-
 
! ''_type''
 
| Bestimmt den Datentyp der Pixeldaten. Die folgenden symbolischen Konstanten werden akzeptiert: '''GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_5_6_5_REV, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2''' und '''GL_UNSIGNED_INT_2_10_10_10_REV'''.
 
|-
 
! ''pixels''
 
| Pointer auf die Bilddaten im Speicher.
 
|}
 
 
 
<br>
 
 
 
== Beschreibung ==
 
Bei der Texturierung wird ein Teil eines Texturbildes auf ein Primitiv, für welches Texturierung aktiviert wurde, abgebildet. Um die verschiedenen Texturierungsmöglichkeiten zu aktivieren bzw. deaktivieren rufen sie [[glEnable]] bzw. [[glDisable]] mit '''GL_TEXTURE_1D, GL_TEXTURE_2D''' bzw. '''GL_TEXTURE_3D''' auf.
 
 
 
'''glTexSubImageXD''' redefiniert einen zusammenhängenden Teilbereich einer bereits bestehenden X-dimensionalen Textur. (X kann 1, 2 oder 3 sein.) Die [[Texel]] auf welche ''pixels'' zeigt, ersetzen dabei den Teil der existierenden Textur. Der Bereich der ersetzt wird ist folgender:
 
* '''x''' läuft von ''xoffset'' bis einschließlich ''xoffset + width - 1''
 
* '''y''' läuft von ''yoffset'' bis einschließlich ''yoffset + height - 1'' (Nur glTexSubImage2D und glTexSubImage3D)
 
* '''z''' läuft von ''zoffset'' bis einschließlich ''zoffset + depth -1'' (Nur glTexSubImage3D)
 
 
 
Die Beschriebene Region darf keine Texel außerhalb des ursprünglich definierten Texturfeldes enthalten.
 
 
 
Es ist kein Fehler einen Subtexturbereich mit Kantenlänge 0 zu definieren. Eine solche Definition hat aber keinen Effekt.
 
 
 
<br>
 
== Hinweise ==
 
'''glTexSubImage1D''' und '''glTexSubImage2D''' sind erst ab OpenGL Version 1.1 verfügbar.<br>
 
'''glTexSubImage3D''' ist erst ab OpenGL Version 1.2 verfügbar.<br>
 
 
 
Die Formate '''GL_BGR''' und '''GL_BGRA''' und die Typen '''GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_5_6_5_REV, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2''' und '''GL_UNSIGNED_INT_2_10_10_10_REV''' sind erst ab OpenGL Version 1.2 verfügbar.
 
 
 
Texturierung wirkt sich im Farbindexmodus nicht aus.
 
 
 
Die Zustände von [[glPixelStore]] und [[glPixelTransfer]] beeinflussen Texturbilder in exakt der gleichen Weise, wie sie [[glDrawPixels]] beeinflussen.
 
 
 
Wenn die Extension [[GL_ARB_multitexture]] unterstützt wird, spezifiziert '''glTexSubImage3D''' eine dreidimensionale Subtextur für die aktuelle Textureinheit, welche mittels [[glActiveTexture]] gesetzt wurde.<br>
 
 
 
Wenn die Extension [[GL_ARB_imaging]] unterstützt wird, können die RGBA Komponenten die in ''pixels'' spezifiziert wurden, durch die  [[Imaging Pipeline]] verarbeitet werden. Für mehr Informationen siehe [[glTexImage3D]].
 
 
 
<br>
 
== Fehlermeldungen ==
 
'''GL_INVALID_ENUM''' wird generiert wenn ''target'' nicht '''GL_TEXTURE_1D''' (für '''glTexSubImage1D'''), '''GL_TEXTURE_2D''' (für '''glTexSubImage2D''') bzw. '''GL_TEXTURE_3D''' (für '''glTexSubImage3D''') ist.<br>
 
 
 
'''GL_INVALID_ENUM''' wird generiert wenn ''format'' eine nicht akzeptierte Konstante übergeben wurde.<br>
 
'''GL_INVALID_ENUM''' wird generiert wenn ''type'' keine Typkonstante zugewiesen wurde.<br>
 
'''GL_INVALID_ENUM''' wird generiert wenn ''type'' gleich '''GL_BITMAP''', aber ''format'' nicht '''GL_COLOR_INDEX''' ist.<br>
 
'''GL_INVALID_VALUE''' wird generiert wenn ''level'' kleiner 0 ist.<br>
 
'''GL_INVALID_VALUE''' könnte generiert werden wenn ''level'' größer als [[Bild:Log_2_max.png]] ist, wobei ''max'' der Wert von '''GL_MAX_TEXTURE_SIZE''' ist. <br>
 
'''GL_INVALID_VALUE''' wird generiert wenn einer der folgenden Fälle eintritt:
 
*[[Bild:xoffset_b.png]]
 
*[[Bild:xoffset_width.png]]
 
*[[Bild:yoffset_b.png]] (Nur glTexSubImage2D und glTexSubImage3D)
 
*[[Bild:yoffset_lheight.png]] (Nur glTexSubImage2D und glTexSubImage3D)
 
*[[Bild:zoffset_b.png]] (Nur glTexSubImage3D)
 
*[[Bild:zoffset_depth.png]](Nur glTexSubImage3D)
 
 
 
wobei gilt:
 
*w ist '''GL_TEXTURE_WIDTH''',
 
*h ist '''GL_TEXTURE_HEIGHT''',
 
*d ist '''GL_TEXTURE_DEPTH''',
 
*b ist die Randbreite (border width) des Texturbildes was modifiziert wird,
 
*l ist 2 wenn '''GL_INTERLACE_EXT''' aktiviert wurde.
 
*w, h und d enthalten die doppelte Randbreite.
 
 
 
<br>
 
'''GL_INVALID_VALUE''' wird generiert wenn ''width, height'' oder ''depth'' kleiner 0 sind.<br>
 
'''GL_INVALID_OPERATION''' wird generiert wenn das Texturfeld nicht durch einen vorhergehenden aufruf von [[glTexImage1D]], [[glTexImage2D]] bzw. [[glTexImage3D]] initialisiert wurde.<br>
 
'''GL_INVALID_OPERATION''' wird generiert wenn ''type'' entweder '''GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5''' oder '''GL_UNSIGNED_SHORT_5_6_5_REV''' ist und ''format'' nicht '''GL_RGB''' ist.<br>
 
'''GL_INVALID_OPERATION''' wird generiert wenn ''type'' entweder '''GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2''' oder '''GL_UNSIGNED_INT_2_10_10_10_REV''' ist und ''format'' weder '''GL_RGBA''' noch '''GL_BGRA''' ist.<br>
 
'''GL_INVALID_OPERATION''' wird generiert wenn '''glTexSubImage1D,glTexSubImage2D''' oder '''glTexSubImage3D''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.
 
 
 
<br>
 
 
 
==  Zugehörige Wertrückgaben ==
 
[[glGetTexImage]]<br>
 
[[glIsEnabled]] mit Token [[glIsEnabled#GL_TEXTURE_1D|GL_TEXTURE_1D]] oder [[glIsEnabled#GL_TEXTURE_2D|GL_TEXTURE_2D]] oder [[glIsEnabled#GL_TEXTURE_3D|GL_TEXTURE_3D]]
 
 
 
<br>
 
 
 
== Siehe auch ==
 
[[glCopyTexImage1D]], [[glCopyTexImage2D]], [[glCopyTexSubImage1D]], [[glCopyTexSubImage2D]], [[glDrawPixels]], [[glPixelStore]], [[glPixelTransfer]], [[glTexEnv]], [[glTexGen]], [[glTexImage1D]], [[glTexImage2D]], [[glTexImage3D]], [[glTexParameter]]
 
<br>
 
Getrennte Artikel zu den drei glTexSubImage-Derivaten:<br>
 
[[glTexSubImage1D]]<br>
 
[[glTexSubImage2D]]<br>
 
[[glTexSubImage3D]]<br>
 
 
 
[[Kategorie:GL|TexSubImage]]
 

Aktuelle Version vom 6. Juli 2006, 16:42 Uhr

Diese Seite ist ein Sammelartikel. Sammelartikel enthalten Verweise auf die Seiten, welche die gewünschten Daten enthalten könnten.
Folgende Seiten kommen für den gewünschten Begriff in Frage: