如何在用 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 程序上设置关闭操作? (如左上角红色按钮工作)的主要内容,如果未能解决你的问题,请参考以下文章

使用 GLUT 和 C 闪烁 2D 纹理

在终端应用程序中使用 opengl(没有 glut/glew)[关闭]

Glut,不同线程C ++中的不同上下文[关闭]

Mac 上的 OpenGL/GLUT 应用程序无法获得焦点 [关闭]

linux c语言编程

C++\GLUT 窗口菜单栏