查看: 1339|回复: 3

【疑惑】《最后的一帧》OSG在关闭窗口时为何要执行一次重启线程后再执行关闭线程

[复制链接]

该用户从未签到

发表于 2013-6-8 16:07:11 | 显示全部楼层 |阅读模式
本帖最后由 xulin_2005 于 2013-6-8 16:07 编辑

在阅读《最后的一帧》时,了解到OSG在关闭窗口时为何要执行一次重启线程后再执行关闭。
bool wasThreading = areThreadsRunning();
if (wasThreading)  stopThreading();
gw->close();
if (wasThreading) startThreading();

当我们选择关闭一个GraphicsWindow窗口gw时,OSG 系统必须首先尝试终止所有的
渲染线程(包括各个图形设备开启的线程和渲染器开启的线程,参见第五日),,关闭窗口之
后再打开所有的渲染线程。事实上,当我们试图在运行时开启一个新的OSG图形窗口时,
也必须使用相同的线程控制步骤,即,关闭线程,创建新渲染窗口,开启线程。否则很可能
造成系统的崩溃(这同样涉及到OSG 的多线程机制,目前它还在悬疑列表中沉睡)。

不解,这里为什么一定要重启线程,因为在后面时候也有stopThreading()的调用,为何在此做这种处理,难道是因为HWND和渲染窗口的绑定关系,请高人指教,谢谢

该用户从未签到

发表于 2013-6-13 08:32:24 | 显示全部楼层
因为 要 gw->close() 了

该用户从未签到

发表于 2013-6-13 22:49:25 | 显示全部楼层
为何在此做这种处理,难道是因为HWND和渲染窗口的绑定关系
简单来说,是的。还有《最后的一帧》这个标题。。。。

该用户从未签到

发表于 2016-9-22 09:46:45 | 显示全部楼层
吓了我一跳,这个最后的一帧。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表