glCopyTexSubImage3D: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
 
K (Siehe auch)
 
(7 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glCopyTexSubImage3D =
 
= glCopyTexSubImage3D =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''glCopyTexSubImage3D''' - kopiert ein dreidimensionales Teilbild.
 
'''glCopyTexSubImage3D''' - kopiert ein dreidimensionales Teilbild.
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
  
Zeile 13: Zeile 15:
 
                               ''x'' : GLint; ''y'' : GLint;
 
                               ''x'' : GLint; ''y'' : GLint;
 
                               ''width'' : GLsizei; ''height'' : GLsizei; ''depth'' : GLsizei)
 
                               ''width'' : GLsizei; ''height'' : GLsizei; ''depth'' : GLsizei)
<br>
+
 
 +
 
  
 
== Parameter ==
 
== Parameter ==
  
 
{| border="1" rules="all"
 
{| border="1" rules="all"
! ''target''  
+
! ''target''
 
| Gibt die Zieltextur an. Muss '''GL_TEXTURE_3D''' sein.
 
| Gibt die Zieltextur an. Muss '''GL_TEXTURE_3D''' sein.
 
|-
 
|-
! ''level''  
+
! ''level''
 
| Gibt die [[LOD]]-Nummer an. Level 0 entspricht dem Standard-Bildlevel. Level ''n'' ist die ''n''-te Mipmap-Textur.
 
| Gibt die [[LOD]]-Nummer an. Level 0 entspricht dem Standard-Bildlevel. Level ''n'' ist die ''n''-te Mipmap-Textur.
 
|-
 
|-
Zeile 34: Zeile 37:
 
|-
 
|-
 
! ''x'', ''y''
 
! ''x'', ''y''
| Gibt - in Fensterkoordinaten - die linke Ecke der Reihe der zu kopierenden Pixel an.
+
| Gibt die Fenster-Koordinaten der unteren linken Ecke der zu kopierenden rechteckigen Region von Pixeln an.
 
|-
 
|-
 
! ''width''
 
! ''width''
Zeile 45: Zeile 48:
 
| Gibt die Tiefe des Teilbildes an.
 
| Gibt die Tiefe des Teilbildes an.
 
|}
 
|}
 
<br>
 
  
== Beschreibung ==  
+
== Beschreibung ==
'''glCopyTexSubImage3D''' ersetzt einen rechteckigen Teil einer zweidimensionalen Textur mit Pixeln aus dem aktuellen '''GL_READ_BUFFER''' (statt aus dem Hauptspeicher, wie das bei [[glTexSubImage3D]] der Fall ist).<br>
+
'''glCopyTexSubImage3D''' ersetzt einen rechteckigen Teil einer zweidimensionalen Textur mit Pixeln aus dem aktuellen '''GL_READ_BUFFER''' (statt aus dem Hauptspeicher, wie das bei [[glTexSubImage3D]] der Fall ist).
<br>
+
 
Das Pixelrechteck mit der linken, unteren Ecke bei [x,y], mit der Länge ''width'' und der Höhe ''height'' ersetzt die Pixel des Texturarrays mit den x-Indices von ''xoffset'' bis ''xoffset + width - 1'', y-Indices von ''yoffset'' bis ''yoffset + height - 1'' und z-Indices von ''zoffset'' bis ''zoffset + depth - 1'' . Dieser Bereich muss nicht alle Texel enthalten, die im ursprünglichen Texturarray lagen. Dabei wird das Texturarray verändert, welches dem Mipmaplevel entspricht, der über ''level'' angegeben wurde.<br>
+
Das Pixelrechteck mit der linken, unteren Ecke bei [x,y], mit der Länge ''width'' und der Höhe ''height'' ersetzt die Pixel des Texturarrays mit den x-Indices von ''xoffset'' bis ''xoffset + width - 1'', y-Indices von ''yoffset'' bis ''yoffset + height - 1'' und z-Indices von ''zoffset'' bis ''zoffset + depth - 1'' . Dieser Bereich muss nicht alle Texel enthalten, die im ursprünglichen Texturarray lagen. Dabei wird das Texturarray verändert, welches dem Mipmaplevel entspricht, der über ''level'' angegeben wurde.
<br>
+
 
Die Pixel werden genauso bearbeitet, wie wenn [[glCopyPixels]] aufgerufen worden wäre, nur dass der Prozess vor der finalen Umwandlung stoppt. An diesem Punkt angelangt, werden alle Pixelwerte an den [0,1]-Bereich angepasst und dann in das texturinterne Format konvertiert, um im Texelarray gespeichert zu werden.<br>
+
Die Pixel werden genauso bearbeitet, wie wenn [[glCopyPixels]] aufgerufen worden wäre, nur dass der Prozess vor der finalen Umwandlung stoppt. An diesem Punkt angelangt, werden alle Pixelwerte an den [0,1]-Bereich angepasst und dann in das texturinterne Format konvertiert, um im Texelarray gespeichert zu werden.
<br>
+
 
Es ist nicht falsch wenn man eine Sub-Textur mit einer Breite oder Höhe von 0 festlegt, aber das hat keinen Effekt. Wenn irgendwelche der Pixel innerhalb der angegebenen Reihe im '''GL_READ_BUFFER''' außerhalb des Fenster sind, dann sind die für diese Werte erhaltenen Werte undefiniert.<br>
+
Es ist nicht falsch wenn man eine Sub-Textur mit einer Breite oder Höhe von 0 festlegt, aber das hat keinen Effekt. Wenn irgendwelche der Pixel innerhalb der angegebenen Reihe im '''GL_READ_BUFFER''' außerhalb des Fenster sind, dann sind die für diese Werte erhaltenen Werte undefiniert.
<br>
+
 
 
Es werden keine Änderungen am internen Format, der Breite, der Höhe, der Tiefe oder Randparametern des angegebenen Texturarrays vorgenommen.  
 
Es werden keine Änderungen am internen Format, der Breite, der Höhe, der Tiefe oder Randparametern des angegebenen Texturarrays vorgenommen.  
<br>
+
 
 +
 
  
 
== Hinweise ==
 
== Hinweise ==
'''glCopyTexSubImage3D''' ist nur verfügbar, wenn die OpenGL-Version 1.1 oder höher ist.<br>
+
'''glCopyTexSubImage3D''' ist nur verfügbar, wenn die OpenGL-Version 1.1 oder höher ist.
<br>
+
 
Texturierung hat keinen Effekt, wenn man sich im Color-Index-Modus befindet.<br>
+
Texturierung hat keinen Effekt, wenn man sich im Color-Index-Modus befindet.
<br>
+
 
[[glPixelStore]]-und [[glPixelTransfer]]-Modi beeinflussen Texturen auf gleiche Weise, wie sie [[glDrawPixel]] beeinflussen.<br>
+
[[glPixelStore]]-und [[glPixelTransfer]]-Modi beeinflussen Texturen auf gleiche Weise, wie sie [[glDrawPixels]] beeinflussen.
<br>
+
 
 
Wenn die [[GL_ARB_imaging]]-Extension unterstützt wird, werden die kopierten RGBA-Komponenten möglicherweise durch die Imaging-Pipeline verarbeitet. Siehe [[glTexImage3D]] für mehr Informationen.
 
Wenn die [[GL_ARB_imaging]]-Extension unterstützt wird, werden die kopierten RGBA-Komponenten möglicherweise durch die Imaging-Pipeline verarbeitet. Siehe [[glTexImage3D]] für mehr Informationen.
  
<br>
+
 
  
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
'''GL_INVALID_ENUM''' wird generiert, wenn ''target'' nicht der Wert '''GL_TEXTURE_3D''' zugewiesen wurde.<br>
+
'''GL_INVALID_ENUM''' wird generiert, wenn ''target'' nicht der Wert '''GL_TEXTURE_3D''' zugewiesen wurde.
 +
 
 +
'''GL_INVALID_OPERATION''' wird generiert, wenn das Texturarrays nicht durch eine vorhergehende [[glTexImage3D]]- oder [[glCopyTexImage3D]]-Operation definiert wurde.
  
'''GL_INVALID_OPERATION''' wird generiert, wenn das Texturarrays nicht durch eine vorhergehende [[glTexImage3D]]- oder [[glCopyTexImage3D]]-Operation definiert wurde.<br>
+
'''GL_INVALID_VALUE''' wird generiert, wenn ''level'' kleiner als 0 ist.
  
'''GL_INVALID_VALUE''' wird generiert, wenn ''level'' kleiner als 0 ist.<br>
+
'''GL_INVALID_VALUE''' wird generiert, wenn ''level'' größer als log2(max) (max = '''GL_MAX_TEXTURE_SIZE''') ist.
  
'''GL_INVALID_VALUE''' wird generiert, wenn ''level'' größer als log2(max) (max = '''GL_MAX_TEXTURE_SIZE''') ist.<br>
+
'''GL_INVALID_VALUE''' wird generiert, wenn '''b''' größer ist als ''y'', ''x'', ''width'',  ''depth'' oder ''height'' ('''b''' ist die Randbreite des Texturarrays).
  
'''GL_INVALID_VALUE''' wird generiert, wenn '''b''' größer ist als ''y'', ''x'', ''width'',  ''depth'' oder ''height'' ('''b''' ist die Randbreite des Texturarrays).<br>
+
'''GL_INVALID_VALUE''' wird generiert, wenn xoffset oder yoffset kleiner als b ist oder wenn (xoffset + width), (yoffset + width) bzw. (zoffset + depth) kleiner ist als (w - b) (w = GL_TEXTURE_WIDTH, b = GL_TEXTURE_BORDER). Man beachte, dass w mindestens zweimal so groß ist wie b.
  
'''GL_INVALID_VALUE''' wird generiert, wenn xoffset oder yoffset kleiner als b ist oder wenn (xoffset + width), (yoffset + width) bzw. (zoffset + depth) kleiner ist als (w - b) (w = GL_TEXTURE_WIDTH, b = GL_TEXTURE_BORDER). Man beachte, dass w mindestens zweimal so groß ist wie b.<br>
+
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glCopyTexSubImage3D''' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wird.  
  
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glCopyTexSubImage3D''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.
 
  
<br>
 
  
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
[[glGetTexImage]] <br>
+
[[glGetTexImage]]
 +
 
 
[[glIsEnabled]] mit Token [[glIsEnabled#GL_TEXTURE_3D|GL_TEXTURE_3D]]
 
[[glIsEnabled]] mit Token [[glIsEnabled#GL_TEXTURE_3D|GL_TEXTURE_3D]]
  
<br>
+
 
  
 
== Siehe auch ==
 
== Siehe auch ==
[[glCopyPixels]], [[glCopyTexImage]], [[glCopyTexImage2D]], [[glCopyTexSubImage1D]], [[glCopyTexSubImage3D]], [[glPixelStore]], [[glPixelTransfer]], [[glReadBuffer]], [[glTexEnv]], [[glTexGen]], [[glTexImage1D]], [[glTexImage2D]], [[glTexImage3D]], [[glTexParameter]], [[glTexSubImage1D]], [[glTexSubImage2D]], [[glTexSubImage3D]]
+
[[glCopyPixels]], [[glCopyTexImage]], [[glCopyTexImage2D]], [[glCopyTexSubImage1D]], [[glCopyTexSubImage2D]], [[glPixelStore]], [[glPixelTransfer]], [[glReadBuffer]], [[glTexEnv]], [[glTexGen]], [[glTexImage1D]], [[glTexImage2D]], [[glTexImage3D]], [[glTexParameter]], [[glTexSubImage1D]], [[glTexSubImage2D]], [[glTexSubImage3D]]
  
<br>
+
[[Kategorie:GL|CopyTexSubImage3D]]
[[Kategorie:GL|CopyTexSubImage2D]]
+
[[Kategorie:GL1.2|CopyTexSubImage3D]]
 +
[[Kategorie:GL3|CopyTexSubImage3D]]

Aktuelle Version vom 21. Februar 2014, 17:52 Uhr

glCopyTexSubImage3D

Name

glCopyTexSubImage3D - kopiert ein dreidimensionales Teilbild.


Delphi-Spezifikation

procedure glCopyTexSubImage3D(target : GLenum; 
                              level : GLint; 
                              xoffset : GLint; yoffset : GLint; zoffset : GLint;
                              x : GLint; y : GLint;
                              width : GLsizei; height : GLsizei; depth : GLsizei)


Parameter

target Gibt die Zieltextur an. Muss GL_TEXTURE_3D sein.
level Gibt die LOD-Nummer an. Level 0 entspricht dem Standard-Bildlevel. Level n ist die n-te Mipmap-Textur.
xoffset Gibt den Texel-Offset-Wert in x-Richtung innerhalb des Texturarrays an.
yoffset Gibt den Texel-Offset-Wert in y-Richtung innerhalb des Texturarrays an.
zoffset Gibt den Texel-Offset-Wert in z-Richtung innerhalb des Texturarrays an.
x, y Gibt die Fenster-Koordinaten der unteren linken Ecke der zu kopierenden rechteckigen Region von Pixeln an.
width Gibt die Breite des Teilbildes an.
height Gibt die Höhe des Teilbildes an.
depth Gibt die Tiefe des Teilbildes an.

Beschreibung

glCopyTexSubImage3D ersetzt einen rechteckigen Teil einer zweidimensionalen Textur mit Pixeln aus dem aktuellen GL_READ_BUFFER (statt aus dem Hauptspeicher, wie das bei glTexSubImage3D der Fall ist).

Das Pixelrechteck mit der linken, unteren Ecke bei [x,y], mit der Länge width und der Höhe height ersetzt die Pixel des Texturarrays mit den x-Indices von xoffset bis xoffset + width - 1, y-Indices von yoffset bis yoffset + height - 1 und z-Indices von zoffset bis zoffset + depth - 1 . Dieser Bereich muss nicht alle Texel enthalten, die im ursprünglichen Texturarray lagen. Dabei wird das Texturarray verändert, welches dem Mipmaplevel entspricht, der über level angegeben wurde.

Die Pixel werden genauso bearbeitet, wie wenn glCopyPixels aufgerufen worden wäre, nur dass der Prozess vor der finalen Umwandlung stoppt. An diesem Punkt angelangt, werden alle Pixelwerte an den [0,1]-Bereich angepasst und dann in das texturinterne Format konvertiert, um im Texelarray gespeichert zu werden.

Es ist nicht falsch wenn man eine Sub-Textur mit einer Breite oder Höhe von 0 festlegt, aber das hat keinen Effekt. Wenn irgendwelche der Pixel innerhalb der angegebenen Reihe im GL_READ_BUFFER außerhalb des Fenster sind, dann sind die für diese Werte erhaltenen Werte undefiniert.

Es werden keine Änderungen am internen Format, der Breite, der Höhe, der Tiefe oder Randparametern des angegebenen Texturarrays vorgenommen.


Hinweise

glCopyTexSubImage3D ist nur verfügbar, wenn die OpenGL-Version 1.1 oder höher ist.

Texturierung hat keinen Effekt, wenn man sich im Color-Index-Modus befindet.

glPixelStore-und glPixelTransfer-Modi beeinflussen Texturen auf gleiche Weise, wie sie glDrawPixels beeinflussen.

Wenn die GL_ARB_imaging-Extension unterstützt wird, werden die kopierten RGBA-Komponenten möglicherweise durch die Imaging-Pipeline verarbeitet. Siehe glTexImage3D für mehr Informationen.


Fehlermeldungen

GL_INVALID_ENUM wird generiert, wenn target nicht der Wert GL_TEXTURE_3D zugewiesen wurde.

GL_INVALID_OPERATION wird generiert, wenn das Texturarrays nicht durch eine vorhergehende glTexImage3D- oder glCopyTexImage3D-Operation definiert wurde.

GL_INVALID_VALUE wird generiert, wenn level kleiner als 0 ist.

GL_INVALID_VALUE wird generiert, wenn level größer als log2(max) (max = GL_MAX_TEXTURE_SIZE) ist.

GL_INVALID_VALUE wird generiert, wenn b größer ist als y, x, width, depth oder height (b ist die Randbreite des Texturarrays).

GL_INVALID_VALUE wird generiert, wenn xoffset oder yoffset kleiner als b ist oder wenn (xoffset + width), (yoffset + width) bzw. (zoffset + depth) kleiner ist als (w - b) (w = GL_TEXTURE_WIDTH, b = GL_TEXTURE_BORDER). Man beachte, dass w mindestens zweimal so groß ist wie b.

GL_INVALID_OPERATION wird generiert, wenn glCopyTexSubImage3D innerhalb eines glBegin-glEnd-Blocks aufgerufen wird.


Zugehörige Wertrückgaben

glGetTexImage

glIsEnabled mit Token GL_TEXTURE_3D


Siehe auch

glCopyPixels, glCopyTexImage, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glPixelStore, glPixelTransfer, glReadBuffer, glTexEnv, glTexGen, glTexImage1D, glTexImage2D, glTexImage3D, glTexParameter, glTexSubImage1D, glTexSubImage2D, glTexSubImage3D