Qt3DRender::QComputeCommand Class
class Qt3DRender::QComputeCommandQComponent pour émettre du travail pour le shader de calcul sur le GPU. Plus...
| En-tête : | #include <QComputeCommand> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS 3drender)target_link_libraries(mytarget PRIVATE Qt6::3drender) |
| qmake : | QT += 3drender |
| En QML : | ComputeCommand |
| Hérite : | Qt3DCore::QComponent |
| Statut : | Déclassé |
Propriétés
- runType : RunType
- workGroupX : int
- workGroupY : int
- workGroupZ : int
Fonctions publiques
| QComputeCommand(Qt3DCore::QNode *parent = nullptr) | |
| Qt3DRender::QComputeCommand::RunType | runType() const |
| int | workGroupX() const |
| int | workGroupY() const |
| int | workGroupZ() const |
Emplacements publics
| void | setRunType(Qt3DRender::QComputeCommand::RunType runType) |
| void | setWorkGroupX(int workGroupX) |
| void | setWorkGroupY(int workGroupY) |
| void | setWorkGroupZ(int workGroupZ) |
| void | trigger(int frameCount = 1) |
| void | trigger(int workGroupX, int workGroupY, int workGroupZ, int frameCount = 1) |
Signaux
| void | runTypeChanged() |
| void | workGroupXChanged() |
| void | workGroupYChanged() |
| void | workGroupZChanged() |
Description détaillée
Un site Qt3DRender::QComputeCommand est utilisé pour fournir du travail au shader de calcul. Le nuanceur de calcul est spécifié dans le composant QMaterial de la même entité que celle à laquelle la QComputeCommand est ajoutée. Les propriétés workGroupX, workGroupY et workGroupZ spécifient la taille des groupes de travail pour l'invocation du nuanceur de calcul. Le nœud Qt3DRender::QDispatchCompute doit être présent dans la FrameGraph pour émettre les commandes.
Remarque : si la politique de rendu est définie sur Qt3DRender::QRenderSettings::OnDemand et qu'aucun changement n'est apporté à la scène, la commande ComputeCommand ne sera pas invoquée de manière répétée. La politique de rendu Qt3DRender::QRenderSettings::Always doit être définie pour que la commande ComputeCommand soit invoquée de manière répétée si aucun autre changement n'intervient dans la scène et ne déclenche le rendu d'une nouvelle image.
Documentation sur les propriétés
runType : RunType
Indique si la commande de calcul doit être exécutée à chaque image ou déclenchée manuellement.
Si le paramètre est défini sur Continu, la commande de calcul est exécutée à chaque image. Il s'agit de la valeur par défaut.
Si le paramètre est défini sur Manuel, la commande de calcul est exécutée pendant un nombre donné d'images, puis le composant se désactive.
Fonctions d'accès :
| Qt3DRender::QComputeCommand::RunType | runType() const |
| void | setRunType(Qt3DRender::QComputeCommand::RunType runType) |
Signal de notification :
| void | runTypeChanged() |
workGroupX : int
Spécifie la taille du groupe de travail X.
Fonctions d'accès :
| int | workGroupX() const |
| void | setWorkGroupX(int workGroupX) |
Signal de notification :
| void | workGroupXChanged() |
workGroupY : int
Spécifie la taille du groupe de travail Y.
Fonctions d'accès :
| int | workGroupY() const |
| void | setWorkGroupY(int workGroupY) |
Signal de notification :
| void | workGroupYChanged() |
workGroupZ : int
Spécifie la taille du groupe de travail Z.
Fonctions d'accès :
| int | workGroupZ() const |
| void | setWorkGroupZ(int workGroupZ) |
Signal de notification :
| void | workGroupZChanged() |
Fonction membre Documentation
[explicit] QComputeCommand::QComputeCommand(Qt3DCore::QNode *parent = nullptr)
Le constructeur crée une nouvelle instance Qt3DRender::QComputeCommand avec l'adresse parent spécifiée.
[slot] void QComputeCommand::setWorkGroupX(int workGroupX)
Définit le groupe de travail pour la première dimension à workGroupX.
Remarque : fonction de définition de la propriété workGroupX.
Voir également workGroupX().
[slot] void QComputeCommand::setWorkGroupY(int workGroupY)
Définit le groupe de travail pour la deuxième dimension à workGroupY.
Remarque : fonction de définition de la propriété workGroupY.
Voir également workGroupY().
[slot] void QComputeCommand::setWorkGroupZ(int workGroupZ)
Définit le groupe de travail pour la troisième dimension à workGroupZ.
Remarque : fonction de définition de la propriété workGroupZ.
Voir également workGroupZ().
[slot] void QComputeCommand::trigger(int frameCount = 1)
Lorsque le type d'exécution est défini sur Manual, l'appel du déclencheur entraîne l'exécution de la commande de calcul pour les prochaines images frameCount. À la fin de l'exécution, la propriété enabled sera mise à false.
Remarque : ce slot est surchargé. Pour se connecter à ce slot :
// Connect using qOverload:
connect(sender, &SenderClass::signal,
computeCommand, qOverload(&QComputeCommand::trigger));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
computeCommand, [receiver = computeCommand](int frameCount) { receiver->trigger(frameCount); }); [slot] void QComputeCommand::trigger(int workGroupX, int workGroupY, int workGroupZ, int frameCount = 1)
Lorsque le type d'exécution est défini sur Manual, l'appel du déclencheur entraîne l'exécution de la commande de calcul pour les prochaines images frameCount. À la fin de l'exécution, la propriété enabled (activée) sera définie sur false (faux). La taille du groupe de travail précédemment définie sera remplacée par workGroupX, workGroupY, workGroupZ.
Note : Ce slot est surchargé. Pour se connecter à ce slot :
// Connect using qOverload:
connect(sender, &SenderClass::signal,
computeCommand, qOverload(&QComputeCommand::trigger));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
computeCommand, [receiver = computeCommand](int workGroupX, int workGroupY, int workGroupZ, int frameCount) { receiver->trigger(workGroupX, workGroupY, workGroupZ, frameCount); }); © 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.