【发布时间】:2020-05-01 16:35:27
【问题描述】:
我正在尝试使用 rust 中的 glium 制作游戏循环。我的目标是让屏幕每秒重绘 60 次。使用我拥有的当前事件循环代码,只有在窗口大小发生变化时才会重绘框架。我在 glutin docs 中读到,我需要在某个地方调用 request_redraw,但我不确定如何/在哪里。到目前为止,这是我的代码:
event_loop.run(move |event, _target, control_flow| match event {
Event::LoopDestroyed => return,
Event::WindowEvent {
window_id: _window_id,
event: winevent,
} => match winevent {
WindowEvent::Resized(physical_size) => display.gl_window().resize(physical_size),
WindowEvent::CloseRequested => {
*control_flow = ControlFlow::Exit;
}
_ => {}
},
Event::RedrawRequested(_window_id) => {
let mut target = display.draw();
target.clear_color_srgb(rng.gen(), rng.gen(), rng.gen(), 1.0);
target.finish().unwrap();
}
_ => {}
});
【问题讨论】:
-
我可能跑题了 - 但这看起来像
winit事件循环,对吗? -
@chub500 我认为 glium 确实使用了 winit,是的。
-
我对 glium 不太熟悉 -
display是什么类型? -
没关系哈哈找到了。你的
display是一个 gliumSurface对象,对吧? -
您必须在这段代码上方创建了一个
winit窗口实例对吗?