C++ X11中是否可以使用全屏8位帧缓冲区?如果可以,我做错了什么?

C++ X11中是否可以使用全屏8位帧缓冲区?如果可以,我做错了什么?,c++,c,x11,framebuffer,8-bit,C++,C,X11,Framebuffer,8 Bit,我试图得到一个全屏8位深度的帧缓冲区,但我找不到任何视觉工作。我想要8位真彩色,其中3位是红色,3位是绿色,2位是蓝色。我正在使用XF86全屏显示 // pass int found = XMatchVisualInfo(l_display, l_screen, 24, TrueColor, &visual); // all of these fail found = XMatchVisualInfo(l_display, l_screen, 8, StaticGray, &

我试图得到一个全屏8位深度的帧缓冲区,但我找不到任何视觉工作。我想要8位真彩色,其中3位是红色,3位是绿色,2位是蓝色。我正在使用XF86全屏显示

// pass
int found = XMatchVisualInfo(l_display, l_screen, 24, TrueColor, &visual);

// all of these fail
found  = XMatchVisualInfo(l_display, l_screen, 8, StaticGray, &visual);
found  = XMatchVisualInfo(l_display, l_screen, 8, GrayScale, &visual);
found  = XMatchVisualInfo(l_display, l_screen, 8, StaticColor, &visual);
found  = XMatchVisualInfo(l_display, l_screen, 8, PseudoColor, &visual);
found  = XMatchVisualInfo(l_display, l_screen, 8, TrueColor, &visual);
found  = XMatchVisualInfo(l_display, l_screen, 8, DirectColor, &visual);

这是不可能的还是我做错了什么?

这是一个相当。。。壁龛显示模式。根本不确定您的X服务器,甚至底层硬件是否支持它

当然,它可以被模拟,但也许没有这样的代码(同样,因为它是一种利基模式)


我不认为仅仅请求一个视频会导致X切换模式。

这只是256色索引模式下的MCGA或VGA,调色板符合您的规格


设置该模式应该不会有任何问题,256色历来是一种流行模式。

您可以尝试使用查看可用的可视id配置。

XF86从来没有在运行时更改位深度的能力。X的设计方式我甚至认为不可能(应用程序在启动时适应显示器的位深度)。您必须选择位深度,然后启动服务器。当然,还要确保你的硬件支持8位视频模式(我想说这也不太可能)。并确保X服务器知道这一点。我不确定它是否能与现代X服务器配合使用(我很久没有测试过它了,我怀疑很少有人测试过)