X11 全屏窗口 (OpenGL)

发布于 2025-01-01 10:45:30 字数 88 浏览 0 评论 0原文

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

I'm writing and OpenGL application on linux (Ubuntu 11.10) using Xlib (X11). What is the simplest way to implement toggle between windowed and fullscreen mode?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蒲公英的约定 2025-01-08 10:45:30

这是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, (unsigned char*)atoms, 1
  );
}

Here's an implementation of what Havoc P suggested, to save the next person the effort:

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, (unsigned char*)atoms, 1
  );
}
她比我温柔 2025-01-08 10:45:30

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

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

on the protocol level, see the _NET_WM_STATE property with accompanying client message and the fullscreen state flag. this is specified in the EWMH spec. for bonus points you may want to manually implement fullscreen if the WM does not report support for the official hint, EWMH specs a way to check what is supported. You may also want to grab the mouse pointer and/or
keyboard if you don't want people to accidentally leave fullscreen.

or, to avoid learning low level X gunge, just use SDL or GTK or Qt or something and they should all have a simple method call to toggle fullscreen.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文