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