QShaderDescription Class
Décrit l'interface d'un shader. Plus d'informations...
| En-tête : | #include <QShaderDescription> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
| Depuis : | Qt 6.6 |
- Liste de tous les membres, y compris les membres hérités
- QShaderDescription fait partie de Rendering in 3D.
Types publics
(since 6.6) struct | BlockVariable |
(since 6.6) struct | BuiltinVariable |
(since 6.6) struct | InOutVariable |
(since 6.6) struct | PushConstantBlock |
(since 6.6) struct | StorageBlock |
(since 6.6) struct | UniformBlock |
| enum | BuiltinType { PositionBuiltin, PointSizeBuiltin, ClipDistanceBuiltin, CullDistanceBuiltin, VertexIdBuiltin, …, ViewIndexBuiltin } |
| enum | ImageFlag { ReadOnlyImage, WriteOnlyImage } |
| flags | ImageFlags |
| enum | ImageFormat { ImageFormatUnknown, ImageFormatRgba32f, ImageFormatRgba16f, ImageFormatR32f, ImageFormatRgba8, …, ImageFormatR8ui } |
| enum | QualifierFlag { QualifierReadOnly, QualifierWriteOnly, QualifierCoherent, QualifierVolatile, QualifierRestrict } |
| flags | QualifierFlags |
| enum | TessellationMode { UnknownTessellationMode, TrianglesTessellationMode, QuadTessellationMode, IsolineTessellationMode } |
| enum | TessellationPartitioning { UnknownTessellationPartitioning, EqualTessellationPartitioning, FractionalEvenTessellationPartitioning, FractionalOddTessellationPartitioning } |
| enum | TessellationWindingOrder { UnknownTessellationWindingOrder, CwTessellationWindingOrder, CcwTessellationWindingOrder } |
| enum | VariableType { Unknown, Float, Vec2, Vec3, Vec4, …, Half4 } |
Fonctions publiques
| QShaderDescription() | |
| QShaderDescription(const QShaderDescription &other) | |
| ~QShaderDescription() | |
| QList<QShaderDescription::InOutVariable> | combinedImageSamplers() const |
| std::array<uint, 3> | computeShaderLocalSize() const |
| QList<QShaderDescription::BuiltinVariable> | inputBuiltinVariables() const |
| QList<QShaderDescription::InOutVariable> | inputVariables() const |
| bool | isValid() const |
| QList<QShaderDescription::BuiltinVariable> | outputBuiltinVariables() const |
| QList<QShaderDescription::InOutVariable> | outputVariables() const |
| QList<QShaderDescription::PushConstantBlock> | pushConstantBlocks() const |
| void | serialize(QDataStream *stream, int version) const |
| QList<QShaderDescription::StorageBlock> | storageBlocks() const |
| QList<QShaderDescription::InOutVariable> | storageImages() const |
| QShaderDescription::TessellationMode | tessellationMode() const |
| uint | tessellationOutputVertexCount() const |
| QShaderDescription::TessellationPartitioning | tessellationPartitioning() const |
| QShaderDescription::TessellationWindingOrder | tessellationWindingOrder() const |
| QByteArray | toJson() const |
| QList<QShaderDescription::UniformBlock> | uniformBlocks() const |
| QShaderDescription & | operator=(const QShaderDescription &other) |
Membres publics statiques
| QShaderDescription | deserialize(QDataStream *stream, int version) |
Non-membres apparentés
| bool | operator==(const QShaderDescription &lhs, const QShaderDescription &rhs) |
Description détaillée
Avertissement : La famille de classes QRhi du module Qt GuiI, y compris QShader et QShaderDescription, offre des garanties de compatibilité limitées. Il n'y a aucune garantie de compatibilité source ou binaire pour ces classes, ce qui signifie que l'API n'est garantie que pour fonctionner avec la version de Qt avec laquelle l'application a été développée. Les changements incompatibles avec la source sont cependant destinés à être maintenus au minimum et ne seront effectués que dans les versions mineures (6.7, 6.8, et ainsi de suite). Pour utiliser ces classes dans une application, créez un lien vers Qt::GuiPrivate (si vous utilisez CMake) et incluez les en-têtes avec le préfixe rhi, par exemple #include <rhi/qshaderdescription.h>.
Un nuanceur possède généralement un ensemble d'entrées et de sorties. Un nuanceur de sommets, par exemple, possède un certain nombre de variables d'entrée et peut utiliser un ou plusieurs tampons uniformes pour accéder aux données (par exemple, une matrice modelview) fournies par l'application. Le nuanceur de l'étape de fragmentation reçoit des données de l'étape de sommet (dans une configuration simple) et peut également s'appuyer sur des données provenant de tampons uniformes, d'images et d'échantillonneurs.
En ce qui concerne les entrées de vertex et la disposition des tampons uniformes (quels sont les noms des membres ? quelle est leur taille, leur décalage, etc.), les applications et les cadres peuvent avoir besoin de les découvrir dynamiquement au moment de l'exécution. C'est typiquement le cas lorsque le shader n'est pas intégré mais fourni par une entité externe, comme l'utilisateur.
Les API graphiques modernes et allégées peuvent ne plus fournir de moyen d'interroger les informations de réflexion des shaders au moment de l'exécution. Par conséquent, ces données sont désormais générées automatiquement par QShaderBaker et sont fournies sous la forme d'un objet QShaderDescription pour chaque QShader.
Exemple
Prenons le nuanceur de sommets suivant :
#version 440
layout(location = 0) in vec4 position;
layout(location = 1) in vec3 color;
layout(location = 0) out vec3 v_color;
layout(std140, binding = 0) uniform buf {
mat4 mvp;
float opacity;
} ubuf;
void main()
{
v_color = color;
gl_Position = ubuf.mvp * position;
}Ce nuanceur a deux entrées : position à l'emplacement 0 avec un type de vec4, et color à l'emplacement 1 avec un type de vec3. Il a une sortie : v_color bien que cela ne soit généralement pas intéressant pour les applications. Ce qui est plus important, c'est qu'il y a un bloc uniforme à la liaison 0 avec une taille de 68 octets et deux membres, une matrice 4x4 nommée mvp à l'offset 0, et un flottant opacity à l'offset 64.
Tout ceci est décrit par un objet QShaderDescription. QShaderDescription peut être sérialisé en JSON et dans un format binaire via QDataStream, et peut être désérialisé à partir de ce format binaire. En pratique, cela est rarement nécessaire puisque QShader se charge automatiquement de la QShaderDescription associée, mais si la QShaderDescription du shader ci-dessus était écrite au format JSON (comme c'est le cas avec l'option -d de l'outil qsb ), elle ressemblerait à ce qui suit :
{
"inputs": [
{
"location": 1,
"name": "color",
"type": "vec3"
},
{
"location": 0,
"name": "position",
"type": "vec4"
}
],
"outputs": [
{
"location": 0,
"name": "v_color",
"type": "vec3"
}
],
"uniformBlocks": [
{
"binding": 0,
"blockName": "buf",
"members": [
{
"matrixStride": 16,
"name": "mvp",
"offset": 0,
"size": 64,
"type": "mat4"
},
{
"name": "opacity",
"offset": 64,
"size": 4,
"type": "float"
}
],
"set": 0,
"size": 68,
"structName": "ubuf"
}
]
}L'API C++ permet d'accéder à une structure de données telle que celle décrite ci-dessus. Pour des raisons de simplicité, les structures internes ne contiennent que des membres de données publiques, compte tenu également du fait que leur disposition n'est pas susceptible de changer à l'avenir.
Voir également QShaderBaker et QShader.
Documentation sur les types de membres
enum QShaderDescription::BuiltinType
Type de variable intégrée.
| Constante | Valeur |
|---|---|
QShaderDescription::PositionBuiltin | 0 |
QShaderDescription::PointSizeBuiltin | 1 |
QShaderDescription::ClipDistanceBuiltin | 3 |
QShaderDescription::CullDistanceBuiltin | 4 |
QShaderDescription::VertexIdBuiltin | 5 |
QShaderDescription::InstanceIdBuiltin | 6 |
QShaderDescription::PrimitiveIdBuiltin | 7 |
QShaderDescription::InvocationIdBuiltin | 8 |
QShaderDescription::LayerBuiltin | 9 |
QShaderDescription::ViewportIndexBuiltin | 10 |
QShaderDescription::TessLevelOuterBuiltin | 11 |
QShaderDescription::TessLevelInnerBuiltin | 12 |
QShaderDescription::TessCoordBuiltin | 13 |
QShaderDescription::PatchVerticesBuiltin | 14 |
QShaderDescription::FragCoordBuiltin | 15 |
QShaderDescription::PointCoordBuiltin | 16 |
QShaderDescription::FrontFacingBuiltin | 17 |
QShaderDescription::SampleIdBuiltin | 18 |
QShaderDescription::SamplePositionBuiltin | 19 |
QShaderDescription::SampleMaskBuiltin | 20 |
QShaderDescription::FragDepthBuiltin | 22 |
QShaderDescription::NumWorkGroupsBuiltin | 24 |
QShaderDescription::WorkgroupSizeBuiltin | 25 |
QShaderDescription::WorkgroupIdBuiltin | 26 |
QShaderDescription::LocalInvocationIdBuiltin | 27 |
QShaderDescription::GlobalInvocationIdBuiltin | 28 |
QShaderDescription::LocalInvocationIndexBuiltin | 29 |
QShaderDescription::VertexIndexBuiltin | 42 |
QShaderDescription::InstanceIndexBuiltin | 43 |
QShaderDescription::ViewIndexBuiltin | 4440 |
enum QShaderDescription::ImageFlag
flags QShaderDescription::ImageFlags
Drapeaux d'image.
| Constante | Valeur |
|---|---|
QShaderDescription::ReadOnlyImage | 1 << 0 |
QShaderDescription::WriteOnlyImage | 1 << 1 |
Le type ImageFlags est un typedef pour QFlags<ImageFlag>. Il stocke une combinaison OU de valeurs ImageFlag.
enum QShaderDescription::ImageFormat
Format de l'image.
| Constante | Valeur |
|---|---|
QShaderDescription::ImageFormatUnknown | 0 |
QShaderDescription::ImageFormatRgba32f | 1 |
QShaderDescription::ImageFormatRgba16f | 2 |
QShaderDescription::ImageFormatR32f | 3 |
QShaderDescription::ImageFormatRgba8 | 4 |
QShaderDescription::ImageFormatRgba8Snorm | 5 |
QShaderDescription::ImageFormatRg32f | 6 |
QShaderDescription::ImageFormatRg16f | 7 |
QShaderDescription::ImageFormatR11fG11fB10f | 8 |
QShaderDescription::ImageFormatR16f | 9 |
QShaderDescription::ImageFormatRgba16 | 10 |
QShaderDescription::ImageFormatRgb10A2 | 11 |
QShaderDescription::ImageFormatRg16 | 12 |
QShaderDescription::ImageFormatRg8 | 13 |
QShaderDescription::ImageFormatR16 | 14 |
QShaderDescription::ImageFormatR8 | 15 |
QShaderDescription::ImageFormatRgba16Snorm | 16 |
QShaderDescription::ImageFormatRg16Snorm | 17 |
QShaderDescription::ImageFormatRg8Snorm | 18 |
QShaderDescription::ImageFormatR16Snorm | 19 |
QShaderDescription::ImageFormatR8Snorm | 20 |
QShaderDescription::ImageFormatRgba32i | 21 |
QShaderDescription::ImageFormatRgba16i | 22 |
QShaderDescription::ImageFormatRgba8i | 23 |
QShaderDescription::ImageFormatR32i | 24 |
QShaderDescription::ImageFormatRg32i | 25 |
QShaderDescription::ImageFormatRg16i | 26 |
QShaderDescription::ImageFormatRg8i | 27 |
QShaderDescription::ImageFormatR16i | 28 |
QShaderDescription::ImageFormatR8i | 29 |
QShaderDescription::ImageFormatRgba32ui | 30 |
QShaderDescription::ImageFormatRgba16ui | 31 |
QShaderDescription::ImageFormatRgba8ui | 32 |
QShaderDescription::ImageFormatR32ui | 33 |
QShaderDescription::ImageFormatRgb10a2ui | 34 |
QShaderDescription::ImageFormatRg32ui | 35 |
QShaderDescription::ImageFormatRg16ui | 36 |
QShaderDescription::ImageFormatRg8ui | 37 |
QShaderDescription::ImageFormatR16ui | 38 |
QShaderDescription::ImageFormatR8ui | 39 |
enum QShaderDescription::QualifierFlag
flags QShaderDescription::QualifierFlags
Drapeaux du qualificateur.
| Constante | Valeur |
|---|---|
QShaderDescription::QualifierReadOnly | 1 << 0 |
QShaderDescription::QualifierWriteOnly | 1 << 1 |
QShaderDescription::QualifierCoherent | 1 << 2 |
QShaderDescription::QualifierVolatile | 1 << 3 |
QShaderDescription::QualifierRestrict | 1 << 4 |
Le type QualifierFlags est un typedef pour QFlags<QualifierFlag>. Il stocke une combinaison OU de valeurs QualifierFlag.
enum QShaderDescription::TessellationMode
| Constante | Valeur |
|---|---|
QShaderDescription::UnknownTessellationMode | 0 |
QShaderDescription::TrianglesTessellationMode | 1 |
QShaderDescription::QuadTessellationMode | 2 |
QShaderDescription::IsolineTessellationMode | 3 |
enum QShaderDescription::TessellationPartitioning
| Constante | Valeur |
|---|---|
QShaderDescription::UnknownTessellationPartitioning | 0 |
QShaderDescription::EqualTessellationPartitioning | 1 |
QShaderDescription::FractionalEvenTessellationPartitioning | 2 |
QShaderDescription::FractionalOddTessellationPartitioning | 3 |
enum QShaderDescription::TessellationWindingOrder
| Constante | Valeur |
|---|---|
QShaderDescription::UnknownTessellationWindingOrder | 0 |
QShaderDescription::CwTessellationWindingOrder | 1 |
QShaderDescription::CcwTessellationWindingOrder | 2 |
enum QShaderDescription::VariableType
Représente le type d'une variable ou d'un membre de bloc.
| Constante | Valeur | Description |
|---|---|---|
QShaderDescription::Unknown | 0 | |
QShaderDescription::Float | 1 | |
QShaderDescription::Vec2 | 2 | |
QShaderDescription::Vec3 | 3 | |
QShaderDescription::Vec4 | 4 | |
QShaderDescription::Mat2 | 5 | |
QShaderDescription::Mat2x3 | 6 | |
QShaderDescription::Mat2x4 | 7 | |
QShaderDescription::Mat3 | 8 | |
QShaderDescription::Mat3x2 | 9 | |
QShaderDescription::Mat3x4 | 10 | |
QShaderDescription::Mat4 | 11 | |
QShaderDescription::Mat4x2 | 12 | |
QShaderDescription::Mat4x3 | 13 | |
QShaderDescription::Int | 14 | |
QShaderDescription::Int2 | 15 | |
QShaderDescription::Int3 | 16 | |
QShaderDescription::Int4 | 17 | |
QShaderDescription::Uint | 18 | |
QShaderDescription::Uint2 | 19 | |
QShaderDescription::Uint3 | 20 | |
QShaderDescription::Uint4 | 21 | |
QShaderDescription::Bool | 22 | |
QShaderDescription::Bool2 | 23 | |
QShaderDescription::Bool3 | 24 | |
QShaderDescription::Bool4 | 25 | |
QShaderDescription::Double | 26 | |
QShaderDescription::Double2 | 27 | |
QShaderDescription::Double3 | 28 | |
QShaderDescription::Double4 | 29 | |
QShaderDescription::DMat2 | 30 | |
QShaderDescription::DMat2x3 | 31 | |
QShaderDescription::DMat2x4 | 32 | |
QShaderDescription::DMat3 | 33 | |
QShaderDescription::DMat3x2 | 34 | |
QShaderDescription::DMat3x4 | 35 | |
QShaderDescription::DMat4 | 36 | |
QShaderDescription::DMat4x2 | 37 | |
QShaderDescription::DMat4x3 | 38 | |
QShaderDescription::Sampler1D | 39 | |
QShaderDescription::Sampler2D | 40 | |
QShaderDescription::Sampler2DMS | 41 | |
QShaderDescription::Sampler3D | 42 | |
QShaderDescription::SamplerCube | 43 | |
QShaderDescription::Sampler1DArray | 44 | |
QShaderDescription::Sampler2DArray | 45 | |
QShaderDescription::Sampler2DMSArray | 46 | |
QShaderDescription::Sampler3DArray | 47 | |
QShaderDescription::SamplerCubeArray | 48 | |
QShaderDescription::SamplerRect | 49 | |
QShaderDescription::SamplerBuffer | 50 | |
QShaderDescription::SamplerExternalOES | 51 | |
QShaderDescription::Sampler | 52 | Pour les échantillonneurs séparés. |
QShaderDescription::Image1D | 53 | |
QShaderDescription::Image2D | 54 | |
QShaderDescription::Image2DMS | 55 | |
QShaderDescription::Image3D | 56 | |
QShaderDescription::ImageCube | 57 | |
QShaderDescription::Image1DArray | 58 | |
QShaderDescription::Image2DArray | 59 | |
QShaderDescription::Image2DMSArray | 60 | |
QShaderDescription::Image3DArray | 61 | |
QShaderDescription::ImageCubeArray | 62 | |
QShaderDescription::ImageRect | 63 | |
QShaderDescription::ImageBuffer | 64 | |
QShaderDescription::Struct | 65 | |
QShaderDescription::Half | 66 | |
QShaderDescription::Half2 | 67 | |
QShaderDescription::Half3 | 68 | |
QShaderDescription::Half4 | 69 |
Documentation des fonctions membres
QShaderDescription::QShaderDescription()
Construit un nouveau QShaderDescription vide.
Remarque : le fait d'être vide implique que isValid() renvoie false pour l'instance nouvellement construite.
QShaderDescription::QShaderDescription(const QShaderDescription &other)
Construit une copie de other.
[noexcept] QShaderDescription::~QShaderDescription()
Destructeur.
QList<QShaderDescription::InOutVariable> QShaderDescription::combinedImageSamplers() const
Renvoie la liste des échantillonneurs d'images combinés.
Avec les shaders GLSL/Vulkan comme source, un uniforme layout(binding = 1) uniform sampler2D tex; génère ce qui suit : (présenté ici sous forme de JSON textuel)
"combinedImageSamplers": [
{
"binding": 1,
"name": "tex",
"set": 0,
"type": "sampler2D"
}
]Cela ne signifie pas que les versions du shader dans d'autres langages doivent également utiliser un échantillonneur d'images combiné, surtout si l'on considère que le concept n'existe pas partout. Par exemple, une version HLSL utilisera probablement un objet Texture2D et SamplerState avec les registres t1 et s1, respectivement.
std::array<uint, 3> QShaderDescription::computeShaderLocalSize() const
Renvoie la taille locale d'un nuanceur de calcul.
Par exemple, pour un nuanceur de calcul avec la déclaration suivante, la fonction renvoie { 256, 16, 1}.
layout(local_size_x = 256, local_size_y = 16, local_size_z = 1) in;
[static] QShaderDescription QShaderDescription::deserialize(QDataStream *stream, int version)
Renvoie un nouveau QShaderDescription chargé à partir de stream. version spécifie la version qsb.
Voir aussi serialize().
QList<QShaderDescription::BuiltinVariable> QShaderDescription::inputBuiltinVariables() const
Renvoie la liste des composants actifs utilisés en entrée. Par exemple, un shader d'évaluation de tessellation lisant les valeurs de gl_TessCoord et gl_Position aura TessCoordBuiltin et PositionBuiltin listés ici.
QList<QShaderDescription::InOutVariable> QShaderDescription::inputVariables() const
Renvoie la liste des variables d'entrée. Cela comprend les entrées du sommet (parfois appelées attributs) pour l'étape du sommet, et les entrées pour les autres étapes (parfois appelées variations).
bool QShaderDescription::isValid() const
Retourne vrai si le site QShaderDescription contient au moins une entrée dans l'une des listes de variables et de blocs.
QList<QShaderDescription::BuiltinVariable> QShaderDescription::outputBuiltinVariables() const
Renvoie la liste des variables intégrées actives utilisées en entrée. Par exemple, un vertex shader aura très souvent PositionBuiltin comme variable intégrée de sortie.
QList<QShaderDescription::InOutVariable> QShaderDescription::outputVariables() const
Renvoie la liste des variables de sortie.
QList<QShaderDescription::PushConstantBlock> QShaderDescription::pushConstantBlocks() const
Renvoie la liste des blocs de constantes de poussée.
Note : Evitez de vous appuyer sur les blocs de constantes push pour les shaders qui doivent être utilisés en combinaison avec l'interface matérielle de rendu de Qt, car celle-ci ne les supporte pas actuellement.
void QShaderDescription::serialize(QDataStream *stream, int version) const
Sérialise ce QShaderDescription en stream. version spécifie la version qsb.
Voir aussi deserialize() et toJson().
QList<QShaderDescription::StorageBlock> QShaderDescription::storageBlocks() const
Renvoie la liste des blocs de stockage de shaders.
Par exemple, avec les shaders GLSL/Vulkan comme source, la déclaration
struct Stuff {
vec2 a;
vec2 b;
};
layout(std140, binding = 0) buffer StuffSsbo {
vec4 whatever;
Stuff stuff[];
} buf;génère ce qui suit : (présenté ici sous forme de JSON textuel)
"storageBlocks": [ {
"binding": 0,
"blockName": "StuffSsbo",
"instanceName": "buf",
"knownSize": 16,
"runtimeArrayStride": 16
"members": [
{
"name": "whatever",
"offset": 0,
"size": 16,
"type": "vec4"
},
{
"arrayDims": [
0
],
"name": "stuff",
"offset": 16,
"size": 0,
"structMembers": [
{
"name": "a",
"offset": 0,
"size": 8,
"type": "vec2"
},
{
"name": "b",
"offset": 8,
"size": 8,
"type": "vec2"
}
],
"type": "struct"
}
],
"set": 0
} ]Remarque : la taille du dernier membre du bloc de stockage est indéfinie. Cela se traduit par size 0 et une dimension de tableau de [0]. knownSize exclut la taille du dernier membre du bloc de stockage car elle ne sera connue qu'au moment de l'exécution. L'espacement en octets entre les éléments du tableau pour un dernier membre avec une taille de tableau indéfinie est runtimeArrayStride. Cette valeur est déterminée selon les règles de la norme d'agencement de la mémoire tampon (std140, std430).
Remarque : les SSBO ne sont pas disponibles avec certaines API graphiques, telles que OpenGL 2.x ou OpenGL ES antérieures à la version 3.1.
QList<QShaderDescription::InOutVariable> QShaderDescription::storageImages() const
Renvoie la liste des variables d'image.
Celles-ci seront probablement présentes dans les nuanceurs de calcul. Par exemple, layout (binding = 0, rgba8) uniform readonly image2D inputImage; génère ce qui suit : (présenté ici sous forme de JSON textuel)
"storageImages": [
{
"binding": 0,
"imageFormat": "rgba8",
"name": "inputImage",
"set": 0,
"type": "image2D"
}
]Note : Les objets images séparés ne sont pas compatibles avec certaines API graphiques, telles que OpenGL 2.x ou OpenGL ES antérieur à 3.1.
QShaderDescription::TessellationMode QShaderDescription::tessellationMode() const
Renvoie le mode d'exécution de la tessellation pour un contrôle de tessellation ou un nuanceur d'évaluation.
Si elle n'est pas définie, la valeur renvoyée est UnknownTessellationMode.
Par exemple, pour un nuanceur d'évaluation de tessellation avec la déclaration suivante, la fonction renvoie TrianglesTessellationMode.
layout(triangles) in;
uint QShaderDescription::tessellationOutputVertexCount() const
Renvoie le nombre de sommets en sortie.
Par exemple, pour un shader de contrôle de tessellation avec la déclaration suivante, la fonction renvoie 3.
layout(vertices = 3) out;
QShaderDescription::TessellationPartitioning QShaderDescription::tessellationPartitioning() const
Renvoie le mode de partitionnement de la tessellation pour un contrôle de tessellation ou un nuanceur d'évaluation.
Si elle n'est pas définie, la valeur renvoyée est UnknownTessellationPartitioning.
Par exemple, pour un nuanceur d'évaluation de tessellation avec la déclaration suivante, la fonction renvoie FractionalOddTessellationPartitioning.
layout(triangles, fractional_odd_spacing, ccw) in;
QShaderDescription::TessellationWindingOrder QShaderDescription::tessellationWindingOrder() const
Renvoie l'ordre d'enroulement de la tessellation pour un contrôle de tessellation ou un nuanceur d'évaluation.
Si elle n'est pas définie, la valeur renvoyée est UnknownTessellationWindingOrder.
Par exemple, pour un nuanceur d'évaluation de tessellation avec la déclaration suivante, la fonction renvoie CcwTessellationWindingOrder.
layout(triangles, fractional_odd_spacing, ccw) in;
QByteArray QShaderDescription::toJson() const
Renvoie une version texte JSON sérialisée des données.
Remarque : il n'existe pas de méthode de désérialisation pour le texte JSON.
Voir aussi serialize().
QList<QShaderDescription::UniformBlock> QShaderDescription::uniformBlocks() const
Renvoie la liste des blocs uniformes.
QShaderDescription &QShaderDescription::operator=(const QShaderDescription &other)
Attribue other à cet objet.
Non-membres apparentés
[noexcept] bool operator==(const QShaderDescription &lhs, const QShaderDescription &rhs)
Renvoie true si les deux objets QShaderDescription lhs et rhs sont égaux.
© 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.