ShaderImage QML Type
Bietet Shader-Programmen Zugriff auf „Image“. Mehr…
| Import Statement: | import Qt3D.Render 2.12 |
| In C++: | QShaderImage |
| Status: | Deprecated |
Dieser Typ ist veraltet. Wir raten dringend davon ab, ihn in neuem Code zu verwenden.
Eigenschaften
Ausführliche Beschreibung
Um den Inhalt von Texturen für Lese- und Schreibvorgänge in einem Shader verfügbar zu machen, müssen sie als ShaderImage bereitgestellt werden. Texturen können aus mehreren Mip-Ebenen, Ebenen und Flächen bestehen. Durch die Deklaration eines ShaderImage lässt sich zusätzlich festlegen, auf welche Ebene, Ebene oder Fläche des Texturinhalts zugegriffen werden soll.
Damit ShaderImage ordnungsgemäß funktioniert, muss es als Wert eines Parameters zugewiesen werden und auf ein gültiges Qt3D.Render.AbstractTexture verweisen.
Handelt es sich bei der referenzierten Textur um ein eindimensionales Array, ein zweidimensionales Array, eine dreidimensionale Textur, eine Cube-Map, ein Cube-Map-Array oder eine zweidimensionale Multisample-Array-Textur, ist es möglich, entweder die gesamte Texturstufe oder eine einzelne Ebene bzw. Fläche der Texturstufe zu binden. Dies lässt sich über die Eigenschaft „ layered “ steuern.
Die Unterstützung für „ShaderImage“ ist nur in OpenGL 4 und teilweise in OpenGL ES 3.1 und 3.2 vorhanden.
OpenGL 4 unterstützt die folgenden Bildtypen:
| GLSL-Typ | OpenGL-Typ-Enumeration | Texturtyp |
|---|---|---|
| image1D | GL_IMAGE_1D | Texture1D |
| image2D | GL_IMAGE_2D | Texture2D |
| Bild3D | GL_IMAGE_3D | Texture3D |
| image2DRect | GL_IMAGE_2D_RECT | TextureRectangle |
| imageCube | GL_IMAGE_CUBE | TextureCubeMap |
| imageBuffer | GL_IMAGE_BUFFER | TextureBuffer |
| image1DArray | GL_IMAGE_1D_ARRAY | Texture1DArray |
| image2DArray | GL_IMAGE_2D_ARRAY | Texture2DArray |
| imageCubeArray | GL_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
| image2DMS | GL_IMAGE_2D_MULTISAMPLE | Texture2DMultisample |
| image2DMSArray | GL_IMAGE_2D_MULTISAMPLE_ARRAY | Texture2DMultisampleArray |
| iimage1D | GL_INT_IMAGE_1D | Texture1D |
| iimage2D | GL_INT_IMAGE_2D | Texture2D |
| iimage3D | GL_INT_IMAGE_3D | Texture3D |
| iimage2DRect | GL_INT_IMAGE_2D_RECT | TextureRectangle |
| iimageCube | GL_INT_IMAGE_CUBE | TextureCubeMap |
| iimageBuffer | GL_INT_IMAGE_BUFFER | TextureBuffer |
| iimage1DArray | GL_INT_IMAGE_1D_ARRAY | 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 | Texture2DMultisampleArray |
OpenGL ES 3.1 unterstützt die folgenden Bildtypen:
| GLSL-Typ | OpenGL-Typ-Enumeration | Texturtyp |
|---|---|---|
| image2D | GL_IMAGE_2D | Texture2D |
| image3D | GL_IMAGE_3D | Texture3D |
| imageCube | GL_IMAGE_CUBE | TextureCubeMap |
| image2DArray | GL_IMAGE_2D_ARRAY | Texture2DArray |
| iimage2D | GL_INT_IMAGE_2D | Texture2D |
| iimage3D | GL_INT_IMAGE_3D | Texture3D |
| iimageCube | GL_INT_IMAGE_CUBE | TextureCubeMap |
| iimage2DArray | GL_INT_IMAGE_2D_ARRAY | 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 Bildtypen von OpenGL ES 3.1 sowie die folgenden:
| GLSL-Typ | OpenGL-Typ-Enumeration | Texturtyp |
|---|---|---|
| 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
}
}
...
}
...
}Dokumentation zu den Eigenschaften
access : enumeration
Legt fest, welche Art von Zugriff wir unseren Shader-Instanzen auf das Bild gewähren möchten. Wenn ein Shader versucht, in ein Bild zu schreiben oder daraus zu lesen, dessen Zugriffsrechte nicht kompatibel sind, ist das Verhalten undefiniert.
| Konstante | Beschreibung |
|---|---|
ShaderImage.ReadOnly | Schreibgeschützter Zugriff. |
ShaderImage.WriteOnly | Nur-Schreib-Zugriff. |
ShaderImage.ReadWrite | Lese- und Schreibzugriff. |
Der Standardwert ist „ ShaderImage.ReadWrite“.
format : enumeration
Legt das Bildformat fest, was von entscheidender Bedeutung ist, wenn Werte aus einem Shader im „ ShaderImage “ gespeichert werden.
Das Format muss nicht mit dem Format der referenzierten Textur übereinstimmen. Es muss jedoch kompatibel sein (in der Größe übereinstimmen, aber nicht unbedingt hinsichtlich des Klassentyps). Beispielsweise könnte eine Textur im Format R32F (Größe 32 Bit, Klasse 1x32) mit einem Bild im Format RGBA8I (Größe 32 Bit, 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 mit dem der referenzierten Textur übereinstimmt.
Der Standardwert ist „ ShaderImage.Automatic“.
layer : int
Legt fest, welche Ebene der referenzierten Textur für die „ ShaderImage “ verwendet werden soll. Diese Eigenschaft hat keine Auswirkung, 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 die Ebene wie folgt abgerufen:
cubeMapLayer = layer / 6
cubeMapFace = layer - (cubeMapLayer * 6)Der Standardwert ist 0.
layered : bool
*
Wenn auf „true“ gesetzt, wird – sofern es sich bei der referenzierten Textur um ein eindimensionales Array, ein zweidimensionales Array, eine dreidimensionale Textur, eine Cube-Map, ein Cube-Map-Array oder eine zweidimensionale Multisample-Array-Textur handelt – die gesamte Ebene für alle Ebenen gebunden. Wenn auf „false“ gesetzt, wird nur die durch die Eigenschaft „ layer “ angegebene einzelne Ebene gebunden.
Der Standardwert ist „ false “.
mipLevel : int
Legt fest, welches mipLevel der referenzierten Textur für die „ ShaderImage “ verwendet werden soll.
Der Standardwert ist 0.
© 2026 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.