GraphicsStateInfo 结构体

struct QQuickWindow::GraphicsStateInfo

在调用beginExternalCommands()时,描述RHI部分图形状态的某个点。.更多...

公共变量

详细说明

成员变量文档

int GraphicsStateInfo::currentFrameSlot

该变量在记录帧时保持当前帧槽索引。

当场景图使用较底层的3D API(如Vulkan或Metal)进行渲染时,确保在启动新帧时发生阻塞,并且CPU已经领先GPU一定数量的帧(因为在帧编号current - FramesInFlight 中提交的命令缓冲区尚未完成)。在OpenGL或Direct3D 11等其他图形API中,这种级别的控制并没有暴露给API客户端,而是由图形API的实现处理。

由此类推,这也意味着适当的资源(如缓冲区)的双层(或三层)缓冲由图形API客户端管理。通常,当数据在不同帧之间变化时,不能在提交帧时简单地更改统一缓冲区的内容,因为帧可能在开始记录下一帧时仍然处于活动状态(“在飞行中”)。为了避免使管道停滞,一种方法是在幕后有多个缓冲区(和内存分配),从而实现至少为这些资源实现双层缓冲方案。

集成直接使用如Vulkan等图形API进行渲染的应用程序可能希望对其自己的图形资源执行类似的单层或三层缓冲,以兼容Qt渲染引擎的帧提交过程。这涉及到了解最大在飞行帧数(通常是2或3)以及当前的帧槽索引,它是一个从0开始的数字,到FramesInFlight - 1,然后回到0。前者在<码hreftranslate="no">framesInFlight变量中暴露出来。后者,当前索引,是这个值。

有关这些值在实际中使用的示例,请参阅{场景图 - QML下的Vulkan}和{场景图 - QML纹理导入}示例。

int GraphicsStateInfo::framesInFlight

该变量保存保持的最大帧数。

请参见currentFrameSlot中的详细描述。

© 2024 Qt公司有限公司。本文档中包含的文档贡献均为其各自拥有者的版权。提供的文档许可使用受免费软件基金会发布的GNU自由文档许可证第1.3版规定的条款。