2012-10-17 61 views
2

我正在關注來自openglbook.com的openGL教程,並試圖在請求OpenGL上下文在計算機上不可用時模擬場景。我的筆記本電腦的opengl視頻驅動程序版本是3.0,我要求3.3。目標是從錯誤中正常恢復。下面是代碼:處理GLUT函數中的異常的最佳實踐

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()簡單地退出()在它自己。在C中處理這些類型的情況的最佳方式是什麼?

+0

你試過['glGetError'(HTTP:// 'glutInitContextVersion(3,3)'後的www.opengl.org/sdk/docs/man/xhtml/glGetError.xml);'?我無法在glutInitContextVersion上找到任何文檔,並且glut過早,所以我不確定檢查它提供了什麼樣的錯誤。看起來你應該比你早一些檢查結果。 – Hydronium

回答

0

我有這個問題的一個時間,我解決了刪除代碼的這些行:

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

(我用的是freeglut雖然)