ShaderImage QML Type
Bietet Image-Zugriff auf Shader-Programme. Mehr...
Import Statement: | import Qt3D.Render 2.8 |
In C++: | QShaderImage |
Status: | Deprecated |
Eigenschaften
Detaillierte Beschreibung
Um den Inhalt von Texturen für Lese- und Schreiboperationen in einem Shader verfügbar zu machen, müssen sie als ShaderImage dargestellt werden. Texturen können aus mehreren Mip-Ebenen, Layern und Flächen zusammengesetzt sein. Durch die Deklaration eines ShaderImage kann zusätzlich angegeben werden, auf welche Ebene, Schicht oder Fläche des Texturinhalts zugegriffen werden soll.
ShaderImage muss als Wert eines Parameters zugewiesen werden und eine gültige Qt3D.Render.AbstractTexture referenzieren, um korrekt zu funktionieren.
Wenn es sich bei der referenzierten Textur um eine eindimensionale Array-, zweidimensionale Array-, dreidimensionale, Cube-Map-, Cube-Map-Array- oder zweidimensionale Multisample-Array-Textur handelt, ist es möglich, entweder die gesamte Texturebene oder eine einzelne Schicht oder Fläche der Texturebene zu binden. Dies kann mit der Eigenschaft layered gesteuert werden.
Die Unterstützung für ShaderImage wird nur von OpenGL 4 und teilweise von OpenGL ES 3.1 und 3.2 unterstützt.
OpenGL 4 unterstützt die folgenden Bildtypen:
GLSL-Typ | OpenGL Typ Enum | Textur-Typ |
---|---|---|
Bild1D | GL_IMAGE_1D | Texture1D |
Bild2D | GL_IMAGE_2D | Texture2D |
Bild3D | GL_BILD_3D | Texture3D |
image2DRect | GL_ABBILDUNG_2D_RECT | TextureRectangle |
bildWürfel | GL_IMAGE_CUBE | TextureCubeMap |
bildPuffer | GL_IMAGE_BUFFER | TextureBuffer |
image1DArray | GL_IMAGE_1D_ARRAY | Texture1DArray |
image2DArray | GL_IMAGE_2D_ARRAY | Texture2DArray |
imageCubeArray | GL_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
bild2DMS | GL_IMAGE_2D_MULTISAMPLE | Texture2DMultisample |
image2DMSArray | GL_IMAGE_2D_MULTISAMPLE_ARRAY | Texture2DMultisampleArray |
iimage1D | GL_INT_BILD_1D | Texture1D |
iimage2D | GL_INT_BILD_2D | Texture2D |
iimage3D | GL_INT_BILD_3D | Texture3D |
iimage2DRect | GL_INT_ABBILDUNG_2D_RECHTECK | TextureRectangle |
iimageCube | GL_INT_BILD_WÜRFEL | TextureCubeMap |
iimageBuffer | GL_INT_IMAGE_BUFFER | TextureBuffer |
iimage1DArray | GL_INT_BILD_1D_ANORDNUNG | Texture1DArray |
iimage2DArray | GL_INT_IMAGE_2D_ARRAY | Texture2DArray |
iimageCubeArray | GL_INT_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
iimage2DMS | GL_INT_IMAGE_2D_MULTISAMPLE | Texture2DMultisample |
iimage2DMSArray | GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY | Texture2DMultisampleArray |
uimage1D | GL_UNSIGNED_INT_IMAGE_1D | Texture1D |
uimage2D | GL_UNSIGNED_INT_IMAGE_2D | Texture2D |
uimage3D | GL_UNSIGNED_INT_IMAGE_3D | Texture3D |
uimage2DRect | GL_UNSIGNED_INT_IMAGE_2D_RECT | TextureRectangle |
uimageCube | GL_UNSIGNED_INT_IMAGE_CUBE | TextureCubeMap |
uimageBuffer | GL_UNSIGNED_INT_IMAGE_BUFFER | TextureBuffer |
uimage1DArray | GL_UNSIGNED_INT_IMAGE_1D_ARRAY | Texture1DArray |
uimage2DArray | GL_UNSIGNED_INT_IMAGE_2D_ARRAY | Texture2DArray |
uimageCubeArray | GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
uimage2DMS | GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE | Texture2DMultisample |
uimage2DMSArray | GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY (UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY) | Texture2DMultisampleArray |
OpenGL ES 3.1 unterstützt die folgenden Bildtypen:
GLSL-Typ | OpenGL-Typ Enum | Textur-Typ |
---|---|---|
Bild2D | GL_IMAGE_2D | Texture2D |
image3D | GL_IMAGE_3D | Texture3D |
bildWürfel | GL_IMAGE_CUBE | TextureCubeMap |
image2DArray | GL_IMAGE_2D_ARRAY | Texture2DArray |
iBild2D | GL_INT_BILD_2D | Texture2D |
iimage3D | GL_INT_ABBILDUNG_3D | Texture3D |
iimageCube | GL_INT_IMAGE_CUBE | TextureCubeMap |
iimage2DArray | GL_INT_BILD_2D_ANORDNUNG | Texture2DArray |
uimage2D | GL_UNSIGNED_INT_IMAGE_2D | Texture2D |
uimage3D | GL_UNSIGNED_INT_IMAGE_3D | Texture3D |
uimageCube | GL_UNSIGNED_INT_IMAGE_CUBE | TextureCubeMap |
uimage2DArray | GL_UNSIGNED_INT_IMAGE_2D_ARRAY | Texture2DArray |
OpenGL ES 3.2 unterstützt alle OpenGL ES 3.1 Bildtypen sowie die folgenden:
GLSL-Typ | OpenGL-Typ Enum | Textur-Typ |
---|---|---|
imageBuffer | GL_IMAGE_BUFFER | TextureBuffer |
imageCubeArray | GL_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
iimageBuffer | GL_IMAGE_BUFFER | TextureBuffer |
iimageCubeArray | GL_INT_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
uimageBuffer | GL_UNSIGNED_INT_IMAGE_BUFFER | TextureBuffer |
uimageCubeArray | GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
Die erwartete Verwendung würde wie folgt aussehen:
import Qt3D.Render 2.14 Entity { ... Texture2D { id: tex2D ... } Material { parameters: Parameter { name: "imageUniformName" value: ShaderImage { texture: tex2D } } ... } ... }
Eigenschaft Dokumentation
access : enumeration |
Gibt die Art des Zugriffs an, den wir von unseren Shader-Instanzen auf das Bild erlauben wollen. Wenn ein Shader versucht, von einem Bild zu schreiben oder zu lesen, das einen inkompatiblen Zugriff hat, ist das Verhalten undefiniert.
Konstante | Beschreibung |
---|---|
ShaderImage.ReadOnly | Nur-Lese-Zugriff. |
ShaderImage.WriteOnly | Nur-Schreibzugriff. |
ShaderImage.ReadWrite | Schreib-Lese-Zugriff. |
Der Standardwert ist ShaderImage.ReadWrite.
format : enumeration |
Legt das Bildformat fest, das beim Speichern von Werten in ShaderImage aus einem Shader von wesentlicher Bedeutung ist.
Das Format muss nicht dasselbe sein wie das Format der referenzierten Textur. Es muss jedoch kompatibel sein (übereinstimmend in der Größe, aber nicht notwendigerweise im Klassentyp). Zum Beispiel könnte eine Textur des Formats R32F (Größe 32bits, Klasse 1x32) mit einem Bild des Formats RGBA8I (Größe 32bits, Klasse 4x8) verwendet werden. Tabelle 8.27 der OpenGL Spezifikationen zeigt die Größe und Klasse für alle unterstützten Bildformate.
Standardmäßig versucht Qt3D, das Bildformat so einzustellen, dass es dem der referenzierten Textur entspricht.
Der Standardwert ist ShaderImage.Automatic.
layer : int |
Hält fest, welche Ebene der referenzierten Textur für die ShaderImage verwendet werden soll. Diese Eigenschaft hat keine Wirkung, wenn layered auf true gesetzt ist oder wenn der Typ der referenzierten Textur nicht mit Ebenen kompatibel ist.
Hinweis: Wenn die referenzierte Textur vom Typ Cube Map oder Cube Map Array ist und ĺayered auf false gesetzt ist, werden die Fläche und der Layer auf folgende Weise abgerufen:
cubeMapLayer = layer / 6 cubeMapFace = layer - (cubeMapLayer * 6)
Der Standardwert ist 0.
layered : bool |
*
Wenn auf true gesetzt, wenn die referenzierte Textur eine eindimensionale Array-, zweidimensionale Array-, dreidimensionale, Cube-Map-, Cube-Map-Array- oder zweidimensionale Multisample-Array-Textur ist, wird die gesamte Ebene für alle Ebenen gebunden. Wird der Wert auf false gesetzt, wird nur die einzelne Ebene, die durch die Eigenschaft layer angegeben ist, gebunden.
Der Standardwert ist false
.
mipLevel : int |
Hält fest, welcher mipLevel aus der referenzierten Textur für die ShaderImage verwendet werden soll.
Der Standardwert ist 0.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.