我正在像这样建立到 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/