ゲーム制作 環境原猫 22日目

昨日はウィンドウリサイズ時の処理を実装しました。
本日は乱数を持ちいて

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がどう変化するか確認します。

次の日

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です