C++ X11合成器/图层管理器

C++ X11合成器/图层管理器,c++,qt,opengl,x11,layer,C++,Qt,Opengl,X11,Layer,我有n个应用程序,使用不同的技术制作GUI 这就是我想做的- 如果正确使用术语,请使用合成器在屏幕外渲染所有应用程序窗口。 然后将它们组合在一起,形成一个单独的图层,在应用几个操作后显示,如重新调整大小、更改不透明度、角度等。 实现语言:C++与XLib 有人能告诉我该怎么做吗 另外,我也尝试过这样做,在堆栈溢出的帮助下成功了- [] 创建n个层,每个应用程序一个,应用程序将绘制到这些层上。 有一个图层管理器,可以在每个图层上执行操作 例如重新调整大小、更改不透明度等,然后将它们组合成一个 单

我有n个应用程序,使用不同的技术制作GUI

这就是我想做的-

如果正确使用术语,请使用合成器在屏幕外渲染所有应用程序窗口。 然后将它们组合在一起,形成一个单独的图层,在应用几个操作后显示,如重新调整大小、更改不透明度、角度等。

实现语言:C++与XLib

有人能告诉我该怎么做吗

另外,我也尝试过这样做,在堆栈溢出的帮助下成功了-

[]

创建n个层,每个应用程序一个,应用程序将绘制到这些层上。 有一个图层管理器,可以在每个图层上执行操作 例如重新调整大小、更改不透明度等,然后将它们组合成一个 单层。
如果我使用第一种方法自己呈现应用程序输出,而不是让它们自己呈现,那么在性能方面是否有优势?如何才能做到这一点。

我想你对合成器的看法是错误的。合成器可以是窗口管理器wm或wm的插件,例如compiz是合成的组件,即它获取屏幕外缓冲区并创建合成输出。您自己呈现应用程序输出是什么意思??GUI应用程序使用底层GUI工具包进行渲染。如果您可以使用支持h/w加速的库(如cairo或Qt)使应用程序在屏幕外渲染&使用您的合成器通过OpenGL使用h/w加速创建输出,那么您可能会得到不错的效果perf@another.anon.coward所以我应该这么做?1.让应用程序在屏幕外使用自己的工具包进行渲染。2.然后将这些缓冲区组合成一个单层。你能告诉我怎么做吗?我是否可以强制应用程序从应用程序进程外部进行屏幕外渲染?上述方式与我在[]中描述的方式有何不同。与此方法相比,屏幕外渲染是否会导致性能提高?@other.anon.coward当我说自己渲染应用程序输出时,我的意思是让应用程序从屏幕上绘制,然后我的合成器将这些输出合并为一个屏幕,而不是让应用程序在屏幕上呈现自己,然后将其输出放入X11容器中。我想我还是不知道哪个词确切的意思是什么。感谢您的回复。您发布的问题与使用Qt框架有关。如果所有应用程序都使用Qt进行渲染,那么您可能可以按照建议执行。不幸的是,我对Qt一无所知。但是,如果您的所有应用程序都使用X服务器(可能是这种情况),那么仍然有可能,您应该了解它的功能和功能。这可以为你提供一些指导。我记得很久以前曾使用过一个这样的模块,但到目前为止,我还不知道确切的细节: