1

我正在建立与 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 位视觉效果?

谢谢,

安迪

4

2 回答 2

2

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

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

于 2011-05-23T16:09:16.440 回答
0

xorg.conf 中有一个“DefaultDepth”参数,位于“Screen”部分。尝试改变它。

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

于 2010-05-16T04:23:05.737 回答