gpt4 book ai didi

c++ - glFinish() 期间的 CPU 使用率

转载 作者:太空宇宙 更新时间:2023-11-04 13:43:30 43 4
gpt4 key购买 nike

上下文:我正在测量 Qt 测试应用程序图形渲染期间的 cpu 使用情况。渲染是通过 Qt Quick 模块完成的,该模块使用基于 OpenGL 的专用场景图。

环境:我在运行 Windows CE 的移动面板上运行测试,并使用 Celog Event Tracker 跟踪 CPU 事件。

问题:当 QQuickWindow 发出信号 afterRendering() 和 frameSwapped() 时,我调用了 glFinish() 函数。由于 glFinish() 的工作是等待所有以前的 opengl 命令完成,我知道 CPU 应该只是在等待 GPU 完成任务。因此,我希望在该调用期间的 CPU 使用率非常低。但是,这不是我在 celog 跟踪器上观察到的情况。我可以观察到,在 glFinish() 时间范围内,属于测试应用程序的一些线程仍在使用 CPU。最后,CPU 使用率与渲染循环的其余部分在同一范围内。

所以我想知道,是否有对 glFinish() 运行时正在使用的 CPU 的解释?

最佳答案

OpenGL 采用异步执行模型。 OpenGL 命令在渲染命令管道中排队,管道可能根本不会执行,并且排队的命令处于休眠状态,直到通过使用 glFlush 强制刷新管道来执行管道。或进行同步 OpenGL 调用,这会导致隐式刷新并等待 glFinish (或 …SwapBuffers )。

因此,如果在调用 glFlush 后 CPU 和 GPU 变得繁忙,这并不奇怪。 .

关于c++ - glFinish() 期间的 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26870111/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com