我正在尝试使用 Xlib 和 OpenGL 来掌握编程图形。我可以创建窗口等,但我坚持改变显示模式。
XRRSizes
我可以使用 Xrandr 函数( 、XRRRates
、XRRGetScreenInfo
、 )列出可用的视频模式XRRConfigSizes
,检查当前设置的视频模式(XRRConfigCurrentConfiguration
),并更改分辨率(XRRSetScreenConfig
)。
我可以列出可用的位深度(又名颜色深度,即每像素位数)XListDepths
。
我不知道如何更改给定屏幕的位深度。
我在 Xrandr 中找不到任何合适的函数来设置位深度和屏幕尺寸。它似乎对位深度一无所知,这真的很奇怪。我在 Xlib 文档中也找不到任何合适的函数。
所以我的问题是:
如何在 Linux 下以编程方式更改分辨率和位深度?
Xlib 库或其他地方是否有任何函数?
我知道有成熟的图形库,例如 SDL,但我不想将它们用作仅用于更改显示模式的依赖项,因为我正在尝试自己编写一个最小的图形库,用于学习目的.
编辑:
我想要达到的目标不必特别用 Xlib 或 X 来完成,但它必须与 X 优雅地合作。例如,我不想完全摆脱 X ─ 它对于在窗口模式下显示图形仍然很有用。但我还需要一些方法来切换到全屏模式,在这种模式下我需要完全控制视频模式:分辨率、颜色深度、刷新率以及直接访问帧缓冲区中的实际像素,而不是一些“仿真”。我认为有一些方法可以做到这一点,因为有视频游戏可以在 Linux 上做到这一点。