X11全屏窗口(OpenGL)

run*_*ead 6 x11 opengl fullscreen xlib

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

小智 8

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

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
  );
}
Run Code Online (Sandbox Code Playgroud)


Hav*_*c P 4

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

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