我愿意运行两个独立的Irrlicht设备,基本上是旧设备关闭之后的新设备,但是通过使用上面提到的两种方法来关闭旧设备,我无法让新设备出现(segfault)。这样做的正确方法是什么?
答案 0 :(得分:2)
只是为了澄清。
所有closeDevice()
所做的只是告诉Irrlicht在下一次run()
来电时返回 false 。从代码的任何部分(从事件处理程序或绘图几何体的中间)调用它是安全的。基本上你可以创建自己的变量来保存 needBreakRenderingLoop 之类的标志并忽略run()
返回的标志,而是检查你的变量并手动更改它而不是调用closeDevice()
。但这已经由你的引擎完成了。
答案 1 :(得分:1)
要以干净的方式完全关闭设备,您必须先调用closeDevice()
,然后run()
清除所有延迟事件,然后drop()
清除内存。
所以基本上做到以下几点:
device->closeDevice();
device->run();
device->drop();