Irrlicht Различия между device->drop() и device->closeDevice()
Я готов запустить два отдельных устройства Irrlicht, в основном новое после закрытия старого, но, используя два вышеупомянутых метода для закрытия старого, я не могу заставить появиться новое устройство (segfault). Как правильно это сделать?
2 ответа
Чтобы полностью закрыть устройство чистым способом, необходимо позвонить closeDevice()
, затем run()
чтобы очистить все поздние события, то drop()
очистить память. Так что в основном сделайте следующее:
device->closeDevice();
device->run();
device->drop();
Просто для уточнения.
Все closeDevice()
это просто сказать Иррлихт, чтобы вернуть ложь на следующий run()
вызов. Его можно вызывать из любой части вашего кода (из обработчика событий или в середине геометрии чертежа). По сути, вы можете создать свою собственную переменную для хранения флага, например needBreakRenderingLoop, и игнорировать то, что run()
возвращает, вместо этого проверьте вашу переменную и измените ее вручную вместо вызова closeDevice()
, Но это сделано двигателем уже для вас.