本日は昨日に引き続き、Macにおける開発環境を整えるため、VSCodeに「rust-analyzer」「CodeLLDB」「Shader languages support for VS Code」の3つの拡張機能を入れました。
また、FPS計測ロジックを実装し、Macで
1億個のポイントスプライト
を描画して何FPS出るか確認しました。
FPS計測ロジックは以下のような実装です。
const B_FPS: bool = true; // FPS 表示フラグ
let mut draw_count_for_fps = 0;
let mut start_for_fps = Instant::now();
const B_LIMIT_60FPS: bool = true; // 60FPS制限フラグ
let time_for_wait = 1_000_000_000u32 / 64; // 60 で割ると60FPS出ないので余裕を持たせておく
let mut start_loop = Instant::now();
’running: loop {
if B_LIMIT_60FPS {
start_loop = Instant::now();
}
~描画処理省略~
// swap window
window.gl_swap_window();
// calc fps
if B_FPS {
draw_count_for_fps += 1;
let time_for_fps_ms = start_for_fps.elapsed().as_millis();
if 1000 <= time_for_fps_ms {
println!("{:.2} FPS", (draw_count_for_fps as f64 * 1000.0) / time_for_fps_ms as f64);
draw_count_for_fps = 0;
start_for_fps = Instant::now();
}
}
if B_LIMIT_60FPS {
let time_nanos: u32 = start_loop.elapsed().as_nanos() as u32;
//println!("{}ナノ秒経過しました。", time_nanos);
if time_nanos < time_for_wait {
//println!("{}ナノ秒待機しました。", time_for_wait - time_nanos);
::std::thread::sleep(::std::time::Duration::new(0, time_for_wait - time_nanos));
}
}
}
1億個描画した結果は
Windows(9900K + RTX3070)では20FPS
Mac(M1)では1FPS未満
でした。
ちなみに1000万個の場合、
Windows(9900K + RTX3070)では60FPS張付き
Mac(M1)では8FPS
でした。