定数バッファはバッファリングしよう in DirectX12

当たり前の話ではあるのですが、たまに「バッファリング気にせずにコードが書かれているのでは?」と感じることがあったので本記事を書くことにしました。

バッファリングしないとどうなるか

バックバッファ分の定数バッファを用意して、描画用と更新用のデータがかぶらないようにする必要があります。と、よく説明されているのですが、実際にどうなるかの撮影に成功したので貼っておきます。

所々おかしな状態になっているのが見て分かると思います。これが描画中にデータを書き換えてしまった状態のものです。常にこのような結果となるわけではなく、描画破損(エラー)の一例として挙げています。

これをアニメ Gif にしたものが以下の図です。ガクガク動いている部分もまた描画エラーです。
球体が青く光っている部分が見えますが、これはアニメGifにしたときのエラーなのでここは違います。

まとめ

今回のこの環境は Windows10 2004 、 RTX 2060S にて行っています。他の環境で起こることも十分考えられる上、システムの状態によってはこんなにシンプルなものでは出ないこともあるでしょう。

また同じく低グラフィックスレイヤーである Vulkan を用いる場合にでも同様の結果、描画エラーが起こる可能性が十分あります。ちゃんとバッファリングをする実装にしましょう。

DirectX12 Programming Vol.1 - すらりんラボ - BOOTH
Windows 10 で使える DirectX 12 のプログラミング入門本です。 DirectX12が使えるようになってからそれなりに時間が経過しましたが、書籍としてまとまっているものはまだ数が少ないかと思います。 Vol.1 では DirectX 12 の初期化から簡単な描画までをじっくりと解説しました。 低レイヤ...
DirectX
すらりんをフォローする
すらりん日記

コメント

タイトルとURLをコピーしました