我正在尝试了解这是如何运作的。因此有两种类型的应用程序 - X 应用程序和 OpenGL 应用程序。 X 应用程序使用 Xlib 绘制到屏幕,但 OpenGL 是否以某种方式完全绕过 X 并直接渲染到 GPU?它是如何做到的?
如果 X 和 OpenGL 都在运行 - 我的计算机如何知道将哪一个渲染到屏幕上?有优先级吗?当 X 运行时,我可以绕过它并覆盖它吗?如果我理解正确的话,这似乎就是 OpenGL 应用程序正在做的事情。
答案1
OpenGL 应用程序不会“绕过 X”,它们要求 X 提供一个表面,并在其上绘图。然后 X 决定如何将该表面投影到屏幕上。有时,如果应用程序已冻结,您可以在移动窗口时看到表面,即亮绿色的矩形。
以前你可以直接在屏幕上画画。然而,现在我们有了合成窗口管理器,从某种意义上说,它们可以自己完成。因此,虽然在屏幕上绘制的 API 可能仍然可用,但 WM 只会每秒 60 次地覆盖您的内容。