Удаление элемента вектора в программе, использующей небезопасные функции 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");
 
    }
}

Это упрощенная версия моего кода, но вы можете найти весь код для воспроизведения проблемы.

0 ответов

Другие вопросы по тегам