Linux下改变显示模式

Sas*_*asQ 5 c++ linux graphics xrandr xlib

我正在尝试使用 Xlib 和 OpenGL 来掌握编程图形。我可以创建窗口等,但我坚持改变显示模式。

我可以使用 Xrandr 函数 ( XRRSizesXRRRatesXRRGetScreenInfoXRRConfigSizes)列出可用的视频模式,检查当前设置的是哪一种 ( XRRConfigCurrentConfiguration),并更改分辨率 ( XRRSetScreenConfig)。

我可以列出可用的位深度(又名颜色深度,即每像素位数XListDepths

知道如何更改给定屏幕的位深度

我在 Xrandr 中找不到任何合适的函数来设置位深度和屏幕尺寸。它似乎对位深度完全一无所知,这真的很奇怪。我在 Xlib 文档中也找不到任何合适的函数。

所以我的问题是:
如何在 Linux 下以编程方式更改分辨率位深度?
Xlib 库或其他地方是否有任何函数?

我知道有图形,如SDL全面的库,但我并不想使用它们作为一个依赖只是改变显示模式,因为我试图写一个最小的图形库我自己,为了学习目的.

编辑:
我想要实现的目标不一定要特别用 Xlib 或 X 来完成,但它必须与 X 优雅地合作。例如,我不想完全摆脱 X ?它对于在窗口模式下显示图形仍然很有用。但我还需要一些方法来切换到全屏模式在这种模式下我需要完全控制视频模式:分辨率、颜色深度、刷新率以及直接访问帧缓冲区中的实际像素,而不是某种“模拟”。我认为有一些方法来做到这一点,因为有视频游戏谁可以做到这在Linux上。