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 的冲突?