在 Linux 下使用 XRender 出现“黑屏”通常不是 XRender 本身的问题,而是合成方式、驱动、窗口管理或程序用法的问题。下面按常见原因逐一说明。
XRender 依赖 Composite Extension 才能正确显示。
twm / fvwm / openbox(未启用 compositor)failback / no composite 会话✅ 解决:
# 启用合成管理器,例如:
xcompmgr -c &
# 或
picom &
XRender 不会“自动”画背景。
典型错误:
XRenderComposite(..., 0, 0, 0, 0, ...); // 源为空
表现:
✅ 正确做法:
很多 XRender 程序使用:
Visual *visual = get_best_visual(...); // ARGB
问题:
✅ 解决:
XRenderFillRectangle(dpy, PictOpSrc, picture,
&(XRenderColor){0,0,0,0xffff}, 0, 0, w, h);
尤其是:
表现:
✅ 排查:
glxinfo | grep "OpenGL"
xdpyinfo | grep Composite
在 Wayland 会话中:
✅ 解决:
例如:
XRenderComposite(..., x, y, 0,0, w, h);
但 x,y 超出窗口
表现:
# 1. 是否启用 Composite
xdpyinfo | grep Composite
# 2. 是否有 compositor
ps aux | grep -E "picom|xcompmgr|compton"
# 3. 是否 ARGB visual
xdpyinfo | grep -A3 "Visual"
XRenderFillRectangle(dpy, PictOpSrc, win_pic,
&(XRenderColor){0xffff,0xffff,0xffff,0xffff},
0, 0, width, height);
你可以告诉我:
我可以直接帮你定位是哪一类问题。