はかせのラボ

私の頭の中を書いていく雑記ブログです

プログラミング ジオメトリインスタンシング②

あいさつ

どうも、はかせです。
今回はジオメトリインスタンシングの続きです。

DirectX11でのジオメトリインスタンシング

DirectX10から標準でサポートする関数ができたらしいです。
それがDrawIndexedInstancedです。
詳細はこちらで
docs.microsoft.com
基本は今まで私が使ってきたDrawIndexedと同じでインデックスを用いた描画を行うようです。
その描画に指定回数繰り返す機能がくっついたのがInstanced系のDrawメソッドみたいです。

ということでさっそく置き換えてみます。

//描画
//mDeviceContext->DrawIndexed(mDrawNum, 0, 0);
mDeviceContext->DrawIndexedInstanced(mDrawNum,100,0,0,1);

コメントアウトがいままでのです。
とりあえず100回繰り返してみます。

f:id:hakase0274:20190524232255g:plain
ん・・・?FPSが低いな・・・
どれ一旦戻してみよう・・・
f:id:hakase0274:20190524234615g:plain
FPSが回復しただと・・・・?

理由

驚いた感じで書きましたけど実際は全く驚いていません。
えぇはい全く。

というのもまだシェーダーも弄ってなければ描画呼び出しも弄ってないしで
今は単純に描画量が100倍になっただけなんですよねw
そらFPSも落ちますよw

あとがき

今回はジオメトリインスタンシングでの描画をただ無心に使ってみました。
わかっていたことですが
ジオメトリインスタンシングは銀の弾丸ではなかったということですね。

ただFPSに影響が出たということは純粋に描画量は増えていると思うので
ある意味メソッドの検証という意味では成功なのかも・・・?

次回以降でちゃんと使い方を勉強しながら
軽量化目的でジオメトリインスタンシングを使えるようになりたいですね。

それでは今回はこの辺でノシ