设备 - > drop()和设备 - > closeDevice()之间的Irrlicht差异

时间:2014-07-07 13:34:42

标签: irrlicht

我愿意运行两个独立的Irrlicht设备,基本上是旧设备关闭之后的新设备,但是通过使用上面提到的两种方法来关闭旧设备,我无法让新设备出现(segfault)。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

只是为了澄清。

所有closeDevice()所做的只是告诉Irrlicht在下一次run()来电时返回 false 。从代码的任何部分(从事件处理程序或绘图几何体的中间)调用它是安全的。基本上你可以创建自己的变量来保存 needBreakRenderingLoop 之类的标志并忽略run()返回的标志,而是检查你的变量并手动更改它而不是调用closeDevice()。但这已经由你的引擎完成了。

答案 1 :(得分:1)

要以干净的方式完全关闭设备,您必须先调用closeDevice(),然后run()清除所有延迟事件,然后drop()清除内存。 所以基本上做到以下几点:

device->closeDevice();
device->run();
device->drop();