使用SiftGPU遇到问题:freeglut ERROR: Function called without first calling 'glutInit'.

1.问题:

        最近在配置SiftGPU(参见高翔博士的博客-SLAM拾萃(3):siftGPU)时遇到一个关于freeglut的问题:freeglut ERROR: Function called without first calling 'glutInit'.

问题截图

使用SiftGPU遇到问题:freeglut ERROR: Function called without first calling 'glutInit'._第1张图片

2.分析:

       我看了下SiftGPU的源代码,在src/SiftGPU/LiteWindow.h中有调用glutDestroyWindow函数,但是在调用glutDestroyWindow之前已经调用了glutinit函数,和上面的错误描述有矛盾;

我暂时也不明白为什么会报这种错误。。。

3.解决办法:

        在google上找了很久,找到一个解决办法:

在调用glutDestroyWindow之前再调用一次glutinit,只不过glutinit的两个参数设为空值。

//修改前
virtual ~LiteWindow()    {  if(glut_id > 0)  glutDestroyWindow(glut_id); }
//修改后
virtual ~LiteWindow()   
    {  
        if(glut_id > 0) 
        {
            //添加以下三行,调用glutinit(),解决问题:freeglut ERROR: Function  called without first calling 'glutInit'.
            int argc = 0;
            char** argv;
            glutInit(&argc, argv); 
            glutDestroyWindow(glut_id);
        } 
    }
然后,问题就解决啦~

你可能感兴趣的:(SiftGPU配置,freeglut,SiftGPU)