我通过 GLX 在 Linux 中编写了一个 OpenGL 应用程序。它使用带有 glXSwapBuffers 的双缓冲和通过 NVIDIA X 服务器设置设置的同步到 VBlank。我正在使用 Compiz 并且窗口平滑移动并且没有撕裂(在 Compiz 设置中启用了同步到 VBlank)。但是当我
尝试移动或调整 OpenGL 窗口的大小或
通过 OpenGL 窗口占用的区域移动其他窗口
系统卡顿并冻结 3-4 秒。将其他窗口移到 OpenGL 窗口占用的区域之外是一如既往的顺畅。此外,仅当 OpenGL 应用程序处于生成动画帧的循环中并因此交换缓冲区时,才会出现问题。如果内容是静态的并且应用程序没有交换缓冲区没有问题,则移动各个窗口是平滑的。可能是我的应用程序和 Compiz 之间的同步问题?