是否有 glXSwapBuffers() 的 XLib 替代品?

Is there an XLib alternative for glXSwapBuffers()?

我希望我的应用程序立即将所有数据绘制到显示器上。在 windows 中有 SwapBuffers() 功能可以做这样的事情,你可以在第二个虚拟 window 上完成所有绘图,然后用现有的 window 交换那个虚拟 window一。 OpenGL 提供了一个 glXSwapBuffers() 函数来做大致相同的事情。但是我不想使用它。因此,我很好奇,在纯 XLib

中实现此功能的方法是什么

在 X11 中有 Pixmap 资源被视为 Drawable(如 Window)。

然后您可以根据需要使用尽可能多的步骤绘制到 Pixmap,最后使用 XCopyArea() 将生成的绘图发送到 Window

注意Pixmap站在服务器端,就像Window一样,所以最后的复制操作是在服务器本地进行的。

有X双缓冲区扩展:https://www.x.org/releases/X11R7.6/doc/libXext/dbelib.html

The Double Buffer Extension (DBE) provides a standard way to utilize double-buffering within the framework of the X Window System.

协议:https://www.x.org/releases/X11R7.7/doc/xextproto/dbe.html

从未见过它在实践中使用过。如果你成功了,请告诉我。