Удаление элемента вектора в программе, использующей небезопасные функции OpenGL, приводит к ошибке сегментации
Я создаю OpenGL-анимацию туннеля, через который "летит" камера. Я попытался сделать туннель бесконечным, состоящий из трех частей (хранящихся вVec<TunnelPart>
) конечной длины. Когда камера прошла середину туннеля (то есть середину средней части), она удаляет ту часть туннеля, которую она уже прошла с индексом = 0, и добавляет вновь созданную часть в конце туннеля с индексом = 2.
Удаление только этой первой части / индекса туннеля (или любого индекса) приводит к ошибке сегментации, что я могу сделать?
Код:
// Method of tunnel struct
pub fn update(&mut self, t: f32) {
if t > self.t_mid {
let new_part = TunnelPart::new(some args);
self.t_mid = self.parts[2].tend + self.dt / 2.0;
self.parts.push(new_part);
println!("this prints");
self.parts.remove(0);
println!("this does not print due to a segmentation fault");
}
}
Это упрощенная версия моего кода, но вы можете найти весь код для воспроизведения проблемы.