freeglut 如何探测 X11 服务器是不是可用?

Posted

技术标签:

【中文标题】freeglut 如何探测 X11 服务器是不是可用?【英文标题】:How can freeglut probe whether or not an X11 server is available?freeglut 如何探测 X11 服务器是否可用? 【发布时间】:2014-08-17 11:40:06 【问题描述】:

我有一个程序可以使用freeglut 以图形方式显示数据,这很好但不是必需的。我经常使用putty 在家里的debian 服务器上编辑和编译我的程序,但是当我尝试从putty 中运行二进制文件时,我收到了这条消息:

freeglut (./a.out): 无法打开显示''

现在我知道,只要稍微摆弄一下,我就可以让 cygwin 以某种方式使用 ssh -X 隧道 X 服务器,但我想要简单地检测 freeglut 是否可以呈现到屏幕上,如果它可以't,只是为了不打扰。

我该怎么做?我尝试在gdb 中的程序上运行回溯,但没有堆栈,所以我不知道是否有异常或返回值可以捕获。

【问题讨论】:

你想在这里实现什么?您可以手动使用 Xlib 来尝试连接到 X 服务器,并在连接失败时做出相应的反应。但您应该知道,freeglut 和 GL 需要 X 服务器才能工作。 @derhass,我基本上是在尝试检查是否存在 X 服务器。如果是,我将运行glutInit() 等。如果不是,我将直接写入控制台。 【参考方案1】:

glutInit():

glutInit 将初始化 GLUT 库并与窗口系统协商会话。 在此过程中,如果 GLUT 无法正确初始化,glutInit 可能会导致 GLUT 程序终止并向用户显示错误消息。这种情况的示例包括无法连接到窗口系统、缺少对 OpenGL 的窗口系统支持以及无效的命令行选项。

所以,不,您无法真正使用 GLUT 处理丢失的 X 服务器。缺少一些讨厌的 hack,例如父看门狗进程或以某种方式挂钩 exit()

【讨论】:

啊。我之前读过它,但它的意思是“您无法使用 glutInit() 检测到丢失的 X 服务器”,即。不排除其他地方存在这种机制的可能性......

以上是关于freeglut 如何探测 X11 服务器是不是可用?的主要内容,如果未能解决你的问题,请参考以下文章

VC++ 中是不是有某种空白的 openGL 和 freeglut 项目?

如何检测与 C++、OpenGL 和 freeglut 的冲突?

操作教程如何手动配置EasyNVR安防视频云服务平台的Onvif探测功能?

如何在不退出远程服务器上的 R 的情况下恢复 X11 连接

如何使用 FREEGLUT 获得多显示器支持的所有分辨率?

如何在没有 X11 的服务器上运行 R,并避免损坏的依赖关系