等待GLContext被释放

时间:2014-11-27 08:00:45

标签: opengl graphics openscenegraph

传递了一组使用OSG库编码并在Window Environment上运行的渲染库。

在我的程序中,渲染器在C ++的基类中作为成员对象存在。在我的类启动函数中,我将执行所有必要的步骤来初始化渲染器并使用此渲染器类相应提供的函数。

但是,我试图删除我的基类,我假设渲染器成员对象将随之被销毁。但是,当我创建该类的另一个实例时,当我尝试访问渲染器中的渲染函数时,程序会崩溃。

已经询问了有关此事的一些意见,并被告知在Windows中,删除该类后,渲染器需要释放其glContext,这可能是Windows环境中的不确定时间,等待硬件设置

这是这样吗?如果是这样,我可以采取哪些步骤来修改渲染源代码(如果我能得到它)来解决问题?

由于

2 个答案:

答案 0 :(得分:1)

实际上不删除/释放OpenGL上下文只会造成一些内存泄漏,但仅此而已。离开OpenGL上下文不应该导致崩溃。事实上,像你这样的崩溃通常是释放一些对象的原因,这仍然是程序的其他部分所需要的,所以释放东西不应该像你一样崩溃。

答案 1 :(得分:1)

您的问题看起来更像是螺旋式构造函数/析构函数或operator=然后是GL问题。

  • 它只是一个没有实际代码来查看/测试
  • 您很可能正在某处访问已删除的指针
  • 检查班级中的所有动态成员变量和指针

过去有过类似的问题,请查看这些

另一个可能的原因

  • 如果您正在将窗口消息代码与线程混合
  • 并访问线程内的可视系统调用或对象而不是窗口代码
  • 可能会破坏操作系统中的某些内容并造成意外崩溃......
  • 至少在Windows上