linux - X11 和 ARGB 视觉效果 : does DefaultDepth() never return 32?

标签 linux x11 compositing

我正在像这样建立到 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 位视觉效果?

谢谢,

安迪

最佳答案

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

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

关于linux - X11 和 ARGB 视觉效果 : does DefaultDepth() never return 32?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2839820/

相关文章:

java - JPanels 在重叠期间闪烁

haskell - 如何使用其他工作区上的应用程序启动 xmonad

linux - 使用 procmail 触发应用程序在我的计算机上运行...但我遇到了障碍

x11 - 如何在 X11 中检索显示的根窗口属性?

video - 如何判断FFmpeg解码的视频帧中的颜色是否预乘了alpha?

linux - 如何在 Linux 中提取/解压缩这个由多个部分组成的 zip 文件?

python - shebang env首选python版本

linux - 尝试使用 npx 创建 React 应用程序时出现各种警告和错误

c - 如何恢复标准输出的文件描述符?