Sur cette page

Qt3DRender::QComputeCommand Class

class Qt3DRender::QComputeCommand

QComponent permet de transmettre des tâches au shader de calcul sur le GPU. En savoir plus...

En-tête : #include <qcomputecommand.h>
CMake : find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake : QT += 3drender
En QML : ComputeCommand
Hérite de : Qt3DCore::QComponent
Statut : Obsolète

Cette classe est obsolète. Nous déconseillons fortement de l'utiliser dans du nouveau code.

Propriétés

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

Description détaillée

Une commande de calcul ( Qt3DRender::QComputeCommand ) sert à émettre des tâches pour le shader de calcul. Le shader de calcul est spécifié dans le composant « QMaterial » de l’entité à laquelle la commande QComputeCommand est ajoutée. Les propriétés « workGroupX », « workGroupY » et « workGroupZ » spécifient la taille des groupes de travail pour l’invocation du shader de calcul. Le nœud « Qt3DRender::QDispatchCompute » doit être présent dans le FrameGraph pour que les commandes soient effectivement émises.

Remarque : si la politique de rendu est définie sur « Qt3DRender::QRenderSettings::OnDemand » et qu’aucune modification n’est apportée à la scène, l’ ComputeCommand ne sera pas invoqué de manière répétée. La politique de rendu « Qt3DRender::QRenderSettings::Always » doit être définie pour que l’ ComputeCommand soit invoqué de manière répétée s’il n’y a aucune autre modification de la scène déclenchant le rendu d’une nouvelle image.

Documentation des propriétés

runType : RunType

Indique si la commande de calcul doit être exécutée à chaque image ou déclenchée manuellement.

Si l'option « Continu » est sélectionnée, la commande de calcul est exécutée à chaque image. Il s'agit du paramètre par défaut.

Si l'option est réglée 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

Définit 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

Définit 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

Définit la taille du groupe de travail Z.

Fonctions d'accès :

int workGroupZ() const
void setWorkGroupZ(int workGroupZ)

Signal de notification :

void workGroupZChanged()

Documentation des fonctions membres

[explicit] QComputeCommand::QComputeCommand(Qt3DCore::QNode *parent = nullptr)

Le constructeur crée une nouvelle instance de ` Qt3DRender::QComputeCommand ` avec l'parent` spécifiée.

[slot] void QComputeCommand::setWorkGroupX(int workGroupX)

Définit le groupe de travail de la première dimension sur « workGroupX ».

Remarque : fonctionde définition de la propriété workGroupX.

Voir aussi workGroupX().

[slot] void QComputeCommand::setWorkGroupY(int workGroupY)

Définit le groupe de travail de la deuxième dimension sur « workGroupY ».

Remarque : fonctionde définition de la propriété workGroupY.

Voir aussi workGroupY().

[slot] void QComputeCommand::setWorkGroupZ(int workGroupZ)

Définit le groupe de travail de la troisième dimension sur « workGroupZ ».

Remarque : fonctionde 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 « Manuel », l'appel du déclencheur entraîne l'exécution de la commande de calcul pour les prochaines trames d'frameCount. Une fois l'exécution terminée, la propriété « enabled » sera définie sur « false ».

Remarque : cet emplacement est surchargé. Pour vous connecter à cet emplacement :

// 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); });
Pour plus d’exemples et d’approches, consultez la section « Connexion à des emplacements surchargés ».

[slot] void QComputeCommand::trigger(int workGroupX, int workGroupY, int workGroupZ, int frameCount = 1)

Lorsque le type d'exécution est défini sur « Manuel », l'appel du déclencheur entraîne l'exécution de la commande de calcul pour les prochaines trames frameCount. Une fois l'exécution terminée, la propriété « enabled » sera définie sur « false ». La taille du groupe de travail précédemment définie sera remplacée par workGroupX, workGroupY, workGroupZ.

Remarque : ce slot est surchargé. Pour vous 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); });
Pour plus d’exemples et d’approches, consultez la section « Connexion à des emplacements surchargés ».

© 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.