昨日はウィンドウリサイズ時の処理を実装しました。
本日は乱数を持ちいて
1億個のポイントスプライト
を描画した際のFPSを計測しました。
const POINTS: usize = 100_000_000;
let mut vertices: Vec<f32> = Vec::with_capacity(POINTS * 3);
let mut rng = rand::thread_rng();
for _i in 0..POINTS {
vertices.push(rng.gen_range(-1.0..1.0)); // x
vertices.push(rng.gen_range(-1.0..1.0)); // y
vertices.push(0.0); // z
}
~略~
unsafe {
gl::BindVertexArray(vao);
gl::DrawArrays(
gl::POINTS, // mode
0, // starting index in the enabled arrays
POINTS as i32, // number of indices to be rendered
);
}
CPUは9900K、GPUはRTX3070です。さあ、何FPS出たと思いますか?
・・・
・・
・
正解は、20FPSでした。1億個も描画すれば画面固まるかと思いましたがちゃんと動きました。
さすがRust、素晴らしい。
・・・・・・いや、これRTX3070の力が大きのかな。
・・・
・・
・
明日以降は、ポイントスプライトの代わりにシェーダーを用いて水分子を描画した場合、FPSがどう変化するか確認します。