0

我正在使用这种方法使我的 OpenGL 应用程序的背景透明(与 Compiz 合作)。

它运行完美,但我认识到一个事实:只要我的应用程序打开透明窗口(无论是否完成任何 OpenGL 绘图),Xorg 进程 CPU 负载都会增加到 ~30%。

谁能解释这种行为?我在想这种方法绕过了Xserver,整个处理都是由显卡完成的?

4

1 回答 1

0

谁能解释这种行为?我在想这种方法绕过了Xserver,整个处理都是由显卡完成的?

X 服务器没有被规避,只是使用了它的其他部分。合成的问题是,窗口内容被表示为 X 可绘制对象(像素图),由 X 服务器管理。为了合成它,X 服务器必须根据合成器的请求执行到纹理的传输。这可能会导致一些管理开销,从而导致性能下降。

此外,大多数合成器的代码也很糟糕(就像编写 Compiz/Metacity/KWin 的人完全不知道 OpenGL 和 GPU 是如何工作的一样)。这是我的 TODO 列表中的项目之一(编写一个体面的合成器,它没有被切除)。

于 2012-05-09T18:50:46.960 回答