在 Linux 下使用 XRender 出现黑屏,通常不是 XRender 本身“坏掉”,而是渲染路径、合成器、驱动或用法出了问题。下面按常见原因 → 现象 → 解决办法来说明。
XRender 很多效果依赖 Composite + 红raw。
现象
解决
xcompmgr &
# 或
picom &
确认:
xdpyinfo | grep Composite
XRender 对驱动实现非常敏感。
常见情况
解决
modesettingintelnvidia + AllowIndirectGLX典型错误:
XRenderComposite 但源/目标不匹配现象
示例错误
XRenderComposite(dpy, PictOpOver, src, 0, dst, 0,0,0,0,0,0, w,h);
但 src 是空的。
XRender 透明 ≠ 自动有背景
现象
解决
XSetWindowAttributes attr;
attr.background_pixel = WhitePixel(dpy, screen);
或使用:
XRenderFillRectangle(...)
解决
检查
xdpyinfo | grep "depth"
# 1. 是否 X11
echo $XDG_SESSION_TYPE
# 2. Composite 是否开
xdpyinfo | grep Composite
# 3. 合成器是否在跑
ps aux | grep -E "picom|xcompmgr|compton"
# 4. 驱动
glxinfo | grep "Renderer"
请告诉我:
我可以直接告诉你是哪一行配置或代码导致黑屏。