Qt3DRender::QWaitFence Class

class Qt3DRender::QWaitFence

FrameGraphNode 用于等待图形命令流中的栅栏发出信号。更多

头文件: #include <QWaitFence>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
继承: Qt3DRender::QFrameGraphNode
状态:已废弃

属性

公共功能

QVariant handle() const
Qt3DRender::QWaitFence::HandleType handleType() const
void setHandle(QVariant handle)
void setHandleType(Qt3DRender::QWaitFence::HandleType type)
void setTimeout(quint64 timeout)
void setWaitOnCPU(bool waitOnCPU)
quint64 timeout() const
bool waitOnCPU() const

信号

void handleChanged(QVariant handle)
void handleTypeChanged(Qt3DRender::QWaitFence::HandleType handleType)
void timeoutChanged(quint64 timeoutChanged)
void waitOnCPUChanged(bool waitOnCPU)

详细说明

栅栏允许同步 GPU 和 CPU 的工作负载。GPU 命令通常是非阻塞的。命令发出后会插入命令缓冲区,GPU 稍后会读取这些缓冲区。在某些情况下,只有在确定硬件已执行命令时,才能继续处理或发出特定命令。栅栏就是这样一种方法。这一点在使用 Qt3D 的第三方引擎时尤为重要,只有当我们知道其他引擎命令已完成对资源的修改时,Qt3D 才能访问共享资源。

QWaitFence 是一个 FrameGraph 节点,它将在后续命令插入命令流之前强制等待信号。它可以与QSetFence 结合使用,并包含用于配置等待时间和是否阻塞 CPU 端的属性。

注意: Qt 3D 在发出绘制调用之前会上传 GPU 资源(纹理、着色器和缓冲区)。

属性文档

handle : QVariant

将底层围栏手柄包裹在QVariant 中。

访问功能:

QVariant handle() const
void setHandle(QVariant handle)

通知信号:

void handleChanged(QVariant handle)

handleType : HandleType

指定正在使用的句柄类型。目前只支持 OpenGL 栅格 id。

访问功能:

Qt3DRender::QWaitFence::HandleType handleType() const
void setHandleType(Qt3DRender::QWaitFence::HandleType type)

Notifier 信号:

void handleTypeChanged(Qt3DRender::QWaitFence::HandleType handleType)

timeout : quint64

指定等待栅栏发出信号的最长时间(纳秒)。

访问功能:

quint64 timeout() const
void setTimeout(quint64 timeout)

通知信号:

void timeoutChanged(quint64 timeoutChanged)

waitOnCPU : bool

指定 CPU 在等待栅栏信号时是否应被阻塞。默认为假。

访问功能:

bool waitOnCPU() const
void setWaitOnCPU(bool waitOnCPU)

通知信号:

void waitOnCPUChanged(bool waitOnCPU)

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