C xlib半透明窗口背景

C xlib半透明窗口背景,c,x11,xlib,C,X11,Xlib,因此,使用这里的代码,我有一个透明的窗口 我想要的是有一个半透明的窗口背景,如何使用c和xlib实现这一点 如果有帮助的话,我会在桌面环境中使用康普顿合成器 据我所知,在纯xlib中不可能做到这一点。相反,绘制窗口时,需要使用OpenGL并将“透明颜色”设置为半透明/argb: glClearColor (0.7, 0.7, 0.7, 0.7); glClear (GL_COLOR_BUFFER_BIT); glXSwapBuffers (display, win); glXWaitGL ();

因此,使用这里的代码,我有一个透明的窗口

我想要的是有一个半透明的窗口背景,如何使用c和xlib实现这一点


如果有帮助的话,我会在桌面环境中使用康普顿合成器

据我所知,在纯xlib中不可能做到这一点。相反,绘制窗口时,需要使用OpenGL并将“透明颜色”设置为半透明/argb:

glClearColor (0.7, 0.7, 0.7, 0.7);
glClear (GL_COLOR_BUFFER_BIT);
glXSwapBuffers (display, win);
glXWaitGL ();

这里有一个关于如何使用OpenGL在XLib中绘制窗口的示例:

只需使用一些alpha值绘制背景,注意在x中它是预乘的-。使用纯xlib no xrender/glx,您唯一的选择是在客户端准备32位RGBA数据,然后使用XPutImage callno将其绘制到window或offcxrin pixmap中,X中的透明度与opengl无关,尽管合成管理器通常使用gl进行硬件加速混合。如何处理drawables的RGBA数据完全取决于composite manager。从客户机的角度来看,您只需设置像素的alpha值,这并没有什么神奇之处,而这可以通过xlib、xrender或opengl实现,可能还可以通过许多其他方式实现