У меня есть минимальное приложение Rust / OpenGL для Windows.Я использую Visual Studio Code, LLDB и Glutin (библиотека, похожая на GLFW).
Запуск через cargo run
открывает пустое окно, но при запуске через LLDB окно не открывается.Я подтвердил как в LLDB, так и в println!
, что функции создания контекста вызываются и выполняется основной цикл.Другими словами, я проверил, что все строки кода достигнуты.То же самое верно, работает ли он из VSCode или нет.
Я использую 32-битный набор инструментов Rust, stable-i686-pc-windows-gnu
, потому что LLDB не полностью поддерживает 64-битную Windows.Помимо этой проблемы, LLDB, кажется, работает как ожидалось.
Ниже приведен main.rs
, который адаптирован из Glutin readme .(Glutin - это библиотека Rust, похожая на GLFW.) Я удалил все, кроме самого необходимого для открытия окна.
Желаемое поведение: Окно открывается при запуске программы из LLDB,То же, что и при запуске программы из-за пределов LLDB.
Фактическое поведение: Окно не открывается при запуске программы из LLDB.
Вопрос: Чем можно объяснить эту разницу в поведении?Т.е. почему окно не открывается из LLDB, когда оно открывается из терминала?
extern crate gl;
extern crate glutin;
fn main() {
let events_loop = glutin::EventsLoop::new();
let window = glutin::WindowBuilder::new();
let context = glutin::ContextBuilder::new();
// When running outside LLDB, this line causes the window to appear.
// The let binding is necessary because without it, the value will be dropped
// and the window will close before the loop starts.
let gl_window = glutin::GlWindow::new(window, context, &events_loop).unwrap();
// Normally, we'd make the window current here. But it's not necessary
// to reproduce the problem.
loop {
// This is where we'd swap the buffers and clear. But it's not necessary
// to reproduce the problem.
}
}