|
|
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]]
| |