Open3

Rustのwinit v3をまとめる + ImGui

ピン留めされたアイテム
ぽち。ぽち。

RustでImGuiやりたかったのに、winitがv3になって破壊的変更だらけだったのでまとめてみる。
Rust初学者ですのでご了承願い侍。

ぽち。ぽち。

(winit) ControlFlow

https://docs.rs/winit/latest/winit/event_loop/enum.ControlFlow.html

イベントループの更新方式を設定する。
初期化の類。
デフォルトは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

https://docs.rs/wgpu/latest/wgpu/enum.PresentMode.html

Variants

pub enum PresentMode {
    AutoVsync = 0,
    AutoNoVsync = 1,
    Fifo = 2,
    FifoRelaxed = 3,
    Immediate = 4,
    Mailbox = 5,
}

- AutoVsync

FifoRelaxedFifoの2つから、サポートされているうちの最適なほうを自動で選択する。

- AutoNoVsync

ImmediateMailboxFifoの3つから、サポートされているうちの最適なほうを自動で選択する。

- Fifo

いわゆる、Vsync ON状態
3フレーム分保持するため、遅延が顕著に感じられる。

- FifoRelaxed

- Immediate

いわゆる、Vsync OFF状態
即座に描画するため、遅延はゼロ。

- Mailbox

いわゆる、Fast Vsync ON状態(あんまり聞かなくない?)