Auf dieser Seite

Qt3DRender::QComputeCommand Class

class Qt3DRender::QComputeCommand

QComponent zur Ausgabe von Aufgaben für den Compute-Shader auf der GPU. Mehr...

Header: #include <qcomputecommand.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
In QML: ComputeCommand
Erbt von: Qt3DCore::QComponent
Status: Veraltet

Diese Klasse ist veraltet. Wir raten dringend davon ab, sie in neuem Code zu verwenden.

Eigenschaften

Öffentliche Funktionen

QComputeCommand(Qt3DCore::QNode *parent = nullptr)
Qt3DRender::QComputeCommand::RunType runType() const
int workGroupX() const
int workGroupY() const
int workGroupZ() const

Öffentliche Slots

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)

Signale

Ausführliche Beschreibung

Ein „ Qt3DRender::QComputeCommand “ wird verwendet, um Aufgaben an den Compute-Shader zu übermitteln. Der Compute-Shader wird in der Komponente „ QMaterial “ derselben Entität festgelegt, der der „QComputeCommand“ hinzugefügt wurde. Die Eigenschaften „ workGroupX “, „ workGroupY “ und „ workGroupZ “ legen die Arbeitsgruppengrößen für den Aufruf des Compute-Shaders fest. Der Knoten „ Qt3DRender::QDispatchCompute “ muss im FrameGraph vorhanden sein, damit die Befehle tatsächlich ausgeführt werden können.

Hinweis: Wenn die Render-Richtlinie auf „ Qt3DRender::QRenderSettings::OnDemand “ gesetzt ist und keine Änderungen an der Szene vorliegen, wird der „ ComputeCommand “ nicht wiederholt aufgerufen. Die Render-Richtlinie „ Qt3DRender::QRenderSettings::Always “ muss festgelegt sein, damit der „ ComputeCommand “ wiederholt aufgerufen wird, sofern keine anderen Änderungen an der Szene vorliegen, die das Rendern eines neuen Frames auslösen.

Dokumentation zu den Eigenschaften

runType : RunType

Legt fest, ob der Berechnungsbefehl bei jedem Frame ausgeführt oder manuell ausgelöst werden soll.

Bei der Einstellung „Kontinuierlich“ wird der Berechnungsbefehl bei jedem Frame ausgeführt. Dies ist die Standardeinstellung.

Bei der Einstellung „Manuell“ wird der Berechnungsbefehl für eine bestimmte Anzahl von Frames ausgeführt, danach deaktiviert sich die Komponente selbst.

Zugriffsfunktionen:

Qt3DRender::QComputeCommand::RunType runType() const
void setRunType(Qt3DRender::QComputeCommand::RunType runType)

Benachrichtigungssignal:

void runTypeChanged()

workGroupX : int

Legt die Größe der X-Arbeitsgruppe fest.

Zugriffsfunktionen:

int workGroupX() const
void setWorkGroupX(int workGroupX)

Benachrichtigungssignal:

void workGroupXChanged()

workGroupY : int

Legt die Größe der Y-Arbeitsgruppe fest.

Zugriffsfunktionen:

int workGroupY() const
void setWorkGroupY(int workGroupY)

Benachrichtigungssignal:

void workGroupYChanged()

workGroupZ : int

Legt die Größe der Z-Arbeitsgruppe fest.

Zugriffsfunktionen:

int workGroupZ() const
void setWorkGroupZ(int workGroupZ)

Benachrichtigungssignal:

void workGroupZChanged()

Dokumentation der Mitgliedsfunktionen

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

Der Konstruktor erstellt eine neue Instanz von „ Qt3DRender::QComputeCommand “ mit dem angegebenen „ parent “.

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

Legt die Arbeitsgruppe für die erste Dimension auf „ workGroupX “ fest.

Hinweis: Setter -Funktion für die Eigenschaft „ workGroupX “.

Siehe auch „ workGroupX()“.

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

Legt die Arbeitsgruppe für die zweite Dimension auf „ workGroupY “ fest.

Hinweis: Setter -Funktion für die Eigenschaft „ workGroupY “.

Siehe auch „ workGroupY()“.

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

Legt die Arbeitsgruppe für die dritte Dimension auf „ workGroupZ “ fest.

Hinweis: Setter -Funktion für die Eigenschaft „ workGroupZ “.

Siehe auch „ workGroupZ()“.

[slot] void QComputeCommand::trigger(int frameCount = 1)

Wenn der Ausführungsmodus auf „Manuell“ gesetzt ist, führt der Aufruf des Triggers dazu, dass der Berechnungsbefehl für die nächsten frameCount Frames ausgeführt wird. Nach Abschluss der Ausführung wird die Eigenschaft „enabled“ auf „false“ gesetzt.

Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:

// 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); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „Verbindung zu überladenen Slots herstellen“.

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

Wenn der Ausführtyp auf „Manuell“ gesetzt ist, bewirkt der Aufruf des Triggers, dass der Berechnungsbefehl für die nächsten frameCount Frames ausgeführt wird. Nach Abschluss der Ausführung wird die Eigenschaft „enabled“ auf „false“ gesetzt. Die zuvor festgelegte Größe der Arbeitsgruppe wird durch „ workGroupX “, „ workGroupY “ und „ workGroupZ “ überschrieben.

Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:

// 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); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „Verbindung zu überladenen Slots herstellen“.

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