如何在用 C 编写的 GLUT 程序上设置关闭操作? (如左上角红色按钮工作)
Posted
技术标签:
【中文标题】如何在用 C 编写的 GLUT 程序上设置关闭操作? (如左上角红色按钮工作)【英文标题】:How do I set the close operation on a GLUT program written in C? (as in the red button in the top left corner to work) 【发布时间】:2012-01-03 21:43:40 【问题描述】:我正在使用 XCode 4.2 中的 GLUT 和 C 编写一个非常简单的程序。
int main(int argc, char** argv)
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(640, 480);
glutCreateWindow("GLUT Program");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);
glutMainLoop();
return EXIT_SUCCESS;
当窗口打开时,我无法通过左上角 (Mac) 的红色按钮关闭它,因为它是灰色的。如果我做过的任何 Java 编程都是一个模型,那么应该有一些函数可以设置关闭操作,以便红色的退出按钮起作用。我似乎也找不到最新版本的 GLUT 的文档。每当我用谷歌搜索它时,我似乎都得到了 OpenGL 文档,这让我有点困惑,然后我对两者之间的关系感到困惑(我认为 GLUT 是与 OpenGL 交互的跨平台接口)。
【问题讨论】:
您使用的是哪种 GLUT 实现? 我真的不知道。据我了解,这些东西包含在 XCode 的发行版中,而 OpenGL 在系统更新中。所以我使用的是 XCode 4.2 和 Lion 中的任何内容。 【参考方案1】:在 Mac OS 上,无法关闭窗口,而必须退出应用程序 (sourceshere)。
【讨论】:
【参考方案2】:在 OS X 上使用 Python 的 GLUT 绑定,我发现将事件处理程序传递给 glutWMCloseFunc 足以执行操作(显然不推荐使用这有利于 glutCloseFunc,但不适用于我的版本)。
【讨论】:
【参考方案3】:如果你想使用 Mac 的窗口系统来编写一个原生的 Mac 类应用程序(你应该 - 你的用户会感谢你的!),你应该使用 NSOpenGLView 而不是 GLUT。有一些很好的示例代码here。
【讨论】:
【参考方案4】:好吧,我现在遇到了这个问题,我正在使用
Command + Q
退出进程,它可以工作。
【讨论】:
【参考方案5】:为关闭按钮添加一个处理程序,它将出现:
void winCloseFunc()
glutDestroyWindow(g_windowId);
exit(0);
int main( ... )
...
glutWMCloseFunc(winCloseFunc);
...
【讨论】:
以上是关于如何在用 C 编写的 GLUT 程序上设置关闭操作? (如左上角红色按钮工作)的主要内容,如果未能解决你的问题,请参考以下文章
在终端应用程序中使用 opengl(没有 glut/glew)[关闭]