gpt4 book ai didi

c++ - 如何在 Xlib 应用程序中等待 VSYNC?

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

我正在使用 XWindow Drawable、Pixmap 和 XRender 在屏幕上绘制一些东西。我可以看到有时会出现闪烁。有没有办法等待VBLANK?我已经在谷歌上搜索了很多,感觉就像在森林里寻找硬币。

不涉及 OpenGL。它是 Linux(Ubuntu)。我可以使用 (nano)sleep(),但需要知道什么时候开始绘制。

最佳答案

我发现到目前为止最简单的解决方案是使用 GLX,因为它具有出色的同步和双缓冲高级接口(interface)。请注意 GLX 不是 OpenGL,它是一个 X 扩展。您需要一个虚拟的 OpenGL 上下文,因为 SwapBuffers(出于某些奇怪的原因)需要它,但仅此而已。

如果您出于任何原因想要在没有 GLX 的情况下执行此操作,您可以通过 X 双缓冲区扩展 (DBE) 创建双缓冲区并使用 X 同步扩展手动同步显示。我自己还没有这样做,但你应该能够找到你喜欢的调用 XSyncListSystemCounters 的东西(在正确初始化之后!):

XSyncListSystemCounters returns a pointer to an array of system counters supported by the display

虽然我自己找不到更多关于困难的方法。祝你好运。

关于c++ - 如何在 Xlib 应用程序中等待 VSYNC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58675066/

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