我目前正在编写一个 OpenGL 渲染器,并且正在编写一些用于枚举下拉列表中使用的显示适配器、设备和模式的类。
我使用 EnumDisplayDevices 获取适配器,然后为每个设备获取 EnumDisplaySettings,为我提供 bpp、宽度、高度和刷新率。但是我不确定如何找出全屏可用的模式(在 DEVMODE 结构中似乎没有它的标志)。我可以假设列出的所有模式原则上都可以全屏实例化吗?
作为后续问题,这种设备枚举方法通常是在 Windows 上获取所需信息的最佳方式吗?
OpenGL 在窗口模式和全屏模式之间没有这种区别。如果你想要一个 OpenGL 程序是全屏的,你只需将窗口设置为顶层、无边界、没有装饰、保持在顶部和最大尺寸。
上面的问题实际上是一个愚蠢的问题。根据定义,窗口模式必须是当前显示设置。所有其他模式必须全屏可用(只要操作系统支持它们,即在 Vista/7 中不建议使用 640x480)。
哼,一点都不对,态度也还行。您可以使用多种功能。
SetPixelFormat、ChoosePixelFormat、ChangeDisplaySettings。
PixelFormat 函数将让您枚举可用模式。ChangeDisplaySettings 允许您设置应用所需的任何屏幕模式(包括位深度)。在 MSDN 中查找它们。