Open3
Rustのwinit v3をまとめる + ImGui
ピン留めされたアイテム
RustでImGuiやりたかったのに、winitがv3になって破壊的変更だらけだったのでまとめてみる。
Rust初学者ですのでご了承願い侍。
(winit) ControlFlow
イベントループの更新方式を設定する。
初期化の類。
デフォルトはWait
Methods
ActiveEventLoop::set_control_flow()
Example
let event_loop = EventLoop::new()?;
event_loop.set_control_flow(ControlFlow::Wait);
Variants
pub enum ControlFlow {
Poll,
Wait,
WaitUntil(Instant),
}
- Poll
なにも待たず、即座に次のループを開始する。
- Wait
デフォルト
何かしらのアクションを待つ。
あまり更新のない、比較的静的な実装に向いているのかもしれない。
- WaitUntil
Wait
に加え、指定の時間経過も待つ。
VSyncとかに便利らしい。
(wgpu) PresentMode
Variants
pub enum PresentMode {
AutoVsync = 0,
AutoNoVsync = 1,
Fifo = 2,
FifoRelaxed = 3,
Immediate = 4,
Mailbox = 5,
}
- AutoVsync
FifoRelaxed
とFifo
の2つから、サポートされているうちの最適なほうを自動で選択する。
- AutoNoVsync
Immediate
とMailbox
とFifo
の3つから、サポートされているうちの最適なほうを自動で選択する。
- Fifo
いわゆる、Vsync ON状態
3フレーム分保持するため、遅延が顕著に感じられる。
- FifoRelaxed
- Immediate
いわゆる、Vsync OFF状態
即座に描画するため、遅延はゼロ。
- Mailbox
いわゆる、Fast Vsync ON状態(あんまり聞かなくない?)