【问题标题】:X11 and ARGB visuals: does DefaultDepth() never return 32?X11 和 ARGB 视觉效果:DefaultDepth() 永远不会返回 32?
【发布时间】:2011-02-19 20:31:30
【问题描述】:

我正在像这样建立到 X 服务器的连接:

display = XOpenDisplay(NULL);
screen = DefaultScreen(display);
depth = DefaultDepth(display, screen);

我现在想知道为什么“深度”总是设置为 24。我希望关闭合成时它只有 24,但实际上,即使我打开合成它仍然是 24。因此,为了获得 32 位 ARGB 视觉效果,我需要首先调用 XGetVisualInfo(),并将深度显式设置为 32。

现在我的问题是: DefaultDepth() 通常不会返回超过 24 或者它只是在我的系统上? (我的显卡有点过时了......)。我知道它可以为 CLUT 显示返回 15、16 甚至 8,但它可以返回 32 吗?还是我总是必须先使用 XGetVisualInfo() 才能获得 ARGB 32 位视觉效果?

谢谢,

安迪

【问题讨论】:

    标签: linux x11 compositing


    【解决方案1】:

    X 协议中的DefaultDepth 是指颜色深度。它不包括阿尔法。这有点丑陋,但这是 20 多年非复合感知应用所假设的。

    是的,它可以返回超过 24 个。深度 30 显示不常见,但确实存在。

    【讨论】:

      【解决方案2】:

      在 xorg.conf 的“屏幕”部分中有一个“DefaultDepth”参数。尝试改变它。

      从root_depth 字段检测深度:http://www.google.com/codesearch?hl=en&safe=off&q=root_depth&aq=f&aqi=g-sx10&aql=&oq=&gs_rfai=

      【讨论】:

        猜你喜欢
        • 2019-11-15
        • 2011-07-25
        • 1970-01-01
        • 2012-10-02
        • 2013-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多