|
本帖最后由 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和渲染窗口的绑定关系,请高人指教,谢谢
|
|