我正在建立一个到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位视觉效果?
谢谢,
安迪
发布于 2011-05-24 00:09:16
X协议中的DefaultDepth指的是颜色深度。它不包括alpha。这有点丑陋,但这是20+多年来非复合感知应用程序的假设。
是的,它可以返回大于24的值。深度为30的显示器并不常见,但确实存在。
发布于 2010-05-16 12:23:06
在xorg.conf中的"Screen“部分有一个"DefaultDepth”参数。试着改变它。
深度检测来自root_depth
字段:http://www.google.com/codesearch?hl=en&safe=off&q=root_depth&aq=f&aqi=g-sx10&aql=&oq=&gs_rfai=
https://stackoverflow.com/questions/2839820
复制相似问题