【问题标题】:QGLWidget context destructionQGLWidget 上下文销毁
【发布时间】:2014-08-15 00:57:05
【问题描述】:

我有一个名为 Mesh 的类,它包含 OpenGL 对象、VBO、纹理等。该类继承自 QObject,其父级设置为我的 QGLWidget。因此,一旦我关闭小部件,它就会被 QObject 系统删除。

但是我有一个问题,因为这个网格类有一个析构函数,它执行一些 OpenGL 调用来清理。当 QObject 子析构函数启动时,OpenGL 上下文已经被破坏,我得到一个段错误。

如何确保在删除 QGLWidget 上下文之前调用我的 ~Mesh() 析构函数?

【问题讨论】:

  • 我建议检查 QOpenGLContext 并自己管理它。

标签: c++ qt opengl qobject qglwidget


【解决方案1】:

您可以在QGLWidget 派生类的析构函数中显式删除Mesh 对象,因为您放入其中的所有内容都将在~QGLWidget() 本身之前执行(以及在负责删除的~QObject() 之前)子对象)。

或者您可以将对象设为非指针成员,或将其包装在智能指针中以达到相同的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多