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

C 处理GLUT函数中异常的最佳实践,c,exception,exception-handling,glut,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_

我正在学习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;
}
glutInitContextVersion(3, 3);
glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
glutInitContextProfile(GLUT_CORE_PROFILE);

我甚至无法检查返回代码,因为似乎glutCreateWindow()只是自己退出()。在C语言中处理这类情况的最佳方法是什么?

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

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;
}
glutInitContextVersion(3, 3);
glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
glutInitContextProfile(GLUT_CORE_PROFILE);
(不过我使用的是freeglut)

glutInitContextVersion(3,3)之后,您有没有尝试过?我找不到关于glutInitContextVersion的任何文档,而且glut非常旧,所以我不确定它提供了什么样的错误检查。看来你应该比你想象的更早检查结果。