处理GLUT函数异常的最佳实践

时间:2012-10-17 02:31:14

标签: c exception exception-handling glut

我正在关注openglbook.com的openGL教程,并尝试在请求计算机上没有OpenGL上下文时模拟场景。我的笔记本电脑opengl视频驱动程序版本是3.0,我要求3.3。目标是从错误中优雅地恢复。这是代码:

glutInitContextVersion(3, 3);
glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS);
glutInitWindowSize(CurrentWidth, CurrentHeight);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);

WindowHandle = glutCreateWindow(WINDOW_TITLE_PREFIX);

if (WindowHandle < 1) {
    fprintf(
            stderr,
            "ERROR: Could not create a new rendering window.\n"
            );
    return -1;
}

我遇到的问题是我的节目中断了:

WindowHandle = glutCreateWindow(WINDOW_TITLE_PREFIX);

我甚至无法检查返回代码,因为看起来glutCreateWindow()只是在它自己的exit()上。在C中处理这些类型情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我有一次这个问题,我解决了删除这些代码行的问题:

glutInitContextVersion(3, 3);
glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
glutInitContextProfile(GLUT_CORE_PROFILE);

(虽然我使用的是freeglut)