ShaderImage QML Type
Fournit un accès par image aux programmes de nuanceurs. Plus d'informations...
| Import Statement: | import Qt3D.Render 2.11 |
| In C++: | QShaderImage |
| Status: | Deprecated |
Propriétés
Description détaillée
Pour que le contenu des textures soit disponible pour les opérations de lecture et d'écriture dans un shader, elles doivent être exposées en tant que ShaderImage. Les textures peuvent être composées de plusieurs niveaux, couches et faces. En outre, la déclaration d'une ShaderImage permet de spécifier le niveau, la couche ou la face du contenu de la texture auquel nous voulons accéder.
Pour fonctionner correctement, le ShaderImage doit être assigné comme valeur d'un paramètre et faire référence à un Qt3D.Render.AbstractTexture valide.
Si la texture référencée est un tableau unidimensionnel, un tableau bidimensionnel, un tableau tridimensionnel, une carte cubique, un tableau de cartes cubiques ou un tableau bidimensionnel à échantillons multiples, il est possible de lier soit l'ensemble du niveau de texture, soit une seule couche ou une seule face du niveau de texture. Ceci peut être contrôlé avec la propriété layered.
La prise en charge de ShaderImage n'est possible qu'avec OpenGL 4 et partiellement avec OpenGL ES 3.1 et 3.2.
OpenGL 4 supporte les types d'images suivants :
| Type GLSL | Type OpenGL Enum | Type de texture |
|---|---|---|
| image1D | GL_IMAGE_1D | Texture1D |
| image2D | GL_IMAGE_2D | Texture2D |
| image3D | 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 supporte les types d'images suivants :
| Type GLSL | Type OpenGL Enum | Type de texture |
|---|---|---|
| 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 supporte tous les types d'images OpenGL ES 3.1 ainsi que les suivants :
| Type GLSL | Type OpenGL Enum | Type de texture |
|---|---|---|
| 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 |
L'utilisation prévue ressemblerait à ce qui suit :
import Qt3D.Render 2.14
Entity {
...
Texture2D {
id: tex2D
...
}
Material {
parameters: Parameter {
name: "imageUniformName"
value: ShaderImage {
texture: tex2D
}
}
...
}
...
}Propriété Documentation
access : enumeration
Spécifie le type d'accès à l'image que nous voulons autoriser pour nos instances de shaders. Si un shader tente d'écrire ou de lire une image dont l'accès est incompatible, le comportement est indéfini.
| Constante | Description |
|---|---|
ShaderImage.ReadOnly | Accès en lecture seule. |
ShaderImage.WriteOnly | Accès en écriture seule. |
ShaderImage.ReadWrite | Accès en lecture-écriture. |
La valeur par défaut est ShaderImage.ReadWrite.
format : enumeration
Spécifie le format de l'image, ce qui est essentiellement important lorsque l'on stocke des valeurs dans ShaderImage à partir d'un shader.
Le format n'a pas besoin d'être le même que celui de la texture référencée. Il doit cependant être compatible (correspondre en taille mais pas nécessairement en type de classe). Par exemple, une texture de format R32F (taille 32bits, classe 1x32) peut être utilisée avec une image de format RGBA8I (taille 32bits, classe 4x8). Le tableau 8.27 des spécifications OpenGL indique la taille et la classe de tous les formats d'image supportés.
Par défaut, Qt3D essaiera de définir le format de l'image pour qu'il corresponde à celui de la texture référencée.
La valeur par défaut est ShaderImage.Automatic.
layer : int
Indique quel calque de la texture référencée doit être utilisé pour l'image ShaderImage. Cette propriété n'a aucun effet si layered vaut true ou si le type de la texture référencée n'est pas compatible avec les calques.
Remarque : lorsque la texture référencée est de type cube map ou cube map array et que ĺayered vaut false, la face et le calque sont récupérés de la manière suivante :
cubeMapLayer = layer / 6 cubeMapFace = layer - (cubeMapLayer * 6)
La valeur par défaut est 0.
layered : bool
*
Si la valeur vaut true, si la texture référencée est un tableau unidimensionnel, un tableau bidimensionnel, un tableau tridimensionnel, un tableau de cubes, un tableau de cubes ou un tableau bidimensionnel à échantillons multiples, l'ensemble du niveau sera lié pour toutes les couches. Si la valeur est fixée à false, seule la couche unique spécifiée par la propriété layer sera liée.
La valeur par défaut est false.
mipLevel : int
Détient le mipLevel de la texture référencée qui doit être utilisé pour ShaderImage.
La valeur par défaut est 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.