如何在Xlib应用程序中等待VSYNC
How to wait for VSYNC in Xlib app?
我正在使用XWindow Drawable, Pixmap和XRender在屏幕上绘制一些东西。我能看到有时会有闪光。有办法等待VBLANK吗?我已经在谷歌上搜索了很多次,感觉就像在森林里找硬币。
没有涉及OpenGL。它是Linux (Ubuntu)。我可以使用(nano)sleep(),但是需要知道什么时候开始绘制
我发现到目前为止最简单的解决方案是使用GLX,因为它具有面向同步和双缓冲的优秀高级接口。请注意GLX不是OpenGL,它是一个X扩展。你需要一个虚拟的OpenGL上下文作为SwapBuffers(出于一些奇怪的原因)的要求,但这就是它。
如果您出于任何原因想要在没有GLX的情况下这样做,您可以通过X双缓冲区扩展(DBE)创建双缓冲区,并使用X同步扩展手动同步显示。您可以通过调用XSyncListSystemCounters找到一些有用的东西,尽管它还需要通过test:
来确认。XSyncListSystemCounters返回一个指针,该指针指向显示器支持的系统计数器数组。
相关文章:
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 如何让LLDB在成功时退出,在失败时等待
- 等待整个 omp 块完成,然后再调用第二个函数
- 提升 ASIO - io_service 不要等待连接到线程
- 如何在C++中实现带有packaged_task的异步等待循环?
- 虚假唤醒是否会解锁所有等待线程,甚至是不相关的线程?
- 如何等待窗口隐藏在Qt中?
- 如何在不等待检索的情况下获取C++中的内存位置?
- 等待被迷住了,没有回来
- 等待 WaitForMultipleObjects 窗口中的事件数量可变
- 一个线程等待多个线程事件
- 等待 qthread 终止的正确方法是什么?
- 不可预测的C++睡眠/等待行为
- Bison/flex 在识别规则后等待输入
- 使用记事本C++打开 txt 文件时无需等待
- 接受函数在发送数据包时等待
- 在Visual Studio中运行/调试C ++时,如何在结束时等待输入
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- 在等待时破坏condition_variable
- 如何在Xlib应用程序中等待VSYNC