X11 全屏窗口 (OpenGL)

X11 Fullscreen window (OpenGL)

我正在使用 Xlib (X11) 在 linux (Ubuntu 11.10) 上编写 OpenGL 应用程序。在窗口模式和全屏模式之间实现切换的最简单方法是什么?


这是 Havoc P 建议的实现,以节省下一个人的努力:

1
2
3
4
5
6
7
8
9
void fullscreen(Display* dpy, Window win) {
  Atom atoms[2] = { XInternAtom(dpy,"_NET_WM_STATE_FULLSCREEN", False), None };
  XChangeProperty(
      dpy,
      win,
      XInternAtom(dpy,"_NET_WM_STATE", False),
      XA_ATOM, 32, PropModeReplace, atoms, 1
  );
}


在协议级别,请参阅 _NET_WM_STATE 属性以及随附的客户端消息和全屏状态标志。这是在 E\
规范中指定的。对于奖励积分,如果 WM 未报告对官方提示的支持,您可能需要手动实现全屏,E\
指定了一种检查支持的方法。您可能还想抓住鼠标指针和/或
如果您不希望人们不小心离开全屏,请使用键盘。

或者,为了避免学习低级 X gunge,只需使用 SDL 或 GTK 或 Qt 或其他东西,它们都应该有一个简单的方法调用来切换全屏。