- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
上下文:我正在测量 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/
我在我的应用程序中使用了两个 OpenGL 上下文。 第一个用于渲染数据,第二个用于后台加载和生成 VBO 和纹理。 当我的加载上下文生成一个 VBO 并将其发送到我的渲染线程时,除非我调用 glFl
以下代码在 Nvidia 驱动程序 361.91(及更早版本)中运行良好(Windows 7、Nvidia GTX 750 Ti),但在 364.72 和 368.69 等较新版本中挂起。现在,只有在
上下文:我正在测量 Qt 测试应用程序图形渲染期间的 cpu 使用情况。渲染是通过 Qt Quick 模块完成的,该模块使用基于 OpenGL 的专用场景图。 环境:我在运行 Windows CE 的
运行有区别吗 glFinish() 正在运行 glFenceSync(...) glClientWaitSync(...) 超时时间长吗? 我正在尝试做的事情:我运行一个 OpenGL 命令管道,我想
我无法区分调用 glFlush() 和 glFinish() 之间的实际区别。 文档说 glFlush() 和 glFinish() 会将所有缓冲的操作推送到 OpenGL,这样就可以确保它们都会被执
我使用的是 FBO+RBO,并且不是在默认帧缓冲区上进行常规双缓冲,而是绘制到 RBO,然后直接在单个缓冲 OpenGL 上下文中的默认 FBO (0) 的 GL_FRONT 缓冲区上进行 blit。
我最近将我的旧 Galaxy S2 手机升级到全新的 Galaxy S7,并且非常惊讶地发现我编写的旧游戏在新手机上的表现似乎更差。将所有内容简化为一个简单的项目后,我发现了问题 - 我在每个 onD
在OpenGL ES Programming Guide他们说: To summarize, your app needs to call the glFinish function to ensur
使用 NSOpenGLView 时有几个类似的 OpenGL 操作: glFlush() [[self openGLContext]flushBuffer] glFinish() glSwapAPPL
我是一名优秀的程序员,十分优秀!