Qt3DRender::QWaitFence Class
class Qt3DRender::QWaitFenceFrameGraphNode 用于等待图形命令流中的栅栏发出信号。更多
头文件: | #include <QWaitFence> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake: | QT += 3drender |
继承: | Qt3DRender::QFrameGraphNode |
状态: | 已废弃 |
属性
- handle : QVariant
- handleType : HandleType
- timeout : quint64
- waitOnCPU : bool
公共功能
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.