Function <glutCreateWindow> called without first calling 'glutInit'.
时间: 2024-10-12 19:18:08 浏览: 25
当你试图通过`glutCreateWindow`创建一个新的窗口时,如果没有先调用`glutInit`来初始化GLUT库,就会遇到错误`Function <glutCreateWindow> called without first calling 'glutInit'`。这是因为`glutInit`是GLUT库的基本设置函数,它定义了应用程序的基本参数并设置了运行环境。
在C++中,如果在`LiteWindow`类中销毁窗口之前没有正确初始化`glut`,可能会导致这个错误。原始的`~LiteWindow()`析构函数可能是这样的:
```cpp
virtual ~LiteWindow() {
if (glut_id > 0) glutDestroyWindow(glut_id);
}
```
要修复这个问题,你需要在调用`glutDestroyWindow`之前确保已经初始化了`glut`。修改后的析构函数应如下所示:
```cpp
virtual ~LiteWindow() {
if (glut_id > 0) {
// 添加对glutInit的调用以确保初始化
int argc = 0;
char** argv;
glutInit(&argc, argv);
// 然后可以安全地销毁窗口
glutDestroyWindow(glut_id);
}
}
```
这样,即使在关闭窗口之前程序发生了异常,`glutDestroyWindow`调用也会在正确的上下文中执行,避免了错误。
阅读全文