BaseCrossDx12ドキュメント
はじめに
DirectX12版のフレームワーク
BaseCrossDx12
のドキュメントです。
DirectX11版のフレームワーク
BaseCross64
は、GitHubに公開されていて、
BaseCross64
から、
レポジトリのクローン
もしくは
ダウンロード
してください。
BaseCrossDx12
を制作するにあたり、
初期手順
が重要だな、と考えました。
一般的な手順とすれば、マイクロソフト社のDx12ドキュメント
DirectX-Graphics-Samples
を参考にしながら、例えば
D3D12HelloWorldサンプル
などの簡単なものを参考に進めていく、あるいは、
0から自分で
作っていく方法もあるかとは思います。
僕自身、そういった方法で何回か挑戦してきましたが、どうも思い通りの仕上がりにならない。そうこうしていくうちに、ハードウェアもどんどん進化していき、Dx12もそれに合わせて進化してきました。それで、2025年現在、アクセラレータによっては
FPS値が1000とか2000にもなる
サンプルも出てきました。
それで、再考した結果、
DirectX-Graphics-Samples
の中から魅力的なサンプルを1つ選び、そこから
作り替えていく
という手順を取ることにしました。幸い
DirectX-Graphics-Samples
は
MITライセンス
なので、自由に改変できます。
それで選んだのが
D3D12xGPU
というサンプルです。このサンプルは
今動いているGPUの性能を計る
みたいな意味合いの強いサンプルですが、コードも非常に読みやすく、整理されていると思います。
C++は
オブジェクト指向言語
ですが、
C言語
のようにも書けます。しかしながらこのサンプルは、
オブジェクト指向設計
が素晴らしく、新しい機能を付ける場合にも
新しいクラスを作り既存のクラスと共存したり、既存のクラスを継承したり
が容易にできます。そのうえ前述したように
FPS値が1000とか2000にもなる
、GPUの能力を十二分に引き出すサンプルと言えます。
そんなわけで、
D3D12xGPU
をもとにフレームワークを作成し始めたわけですが、何点か留意点がありますので、以下に述べます。
もともとの
D3D12xGPU
内のファイル名は変更し、そのうえで書き加えています。そういったファイルは、マイクロソフト社のライセンス文が記述され、その下に僕たちのライセンス(MITライセンス)が、記述されています。
D3D12xGPU
は、デフォルトで
マルチスレッド版
ですが、これを
シングルスレッド版
にして、そこから書き進めています。理由は
マルチスレッド版
は、ハードルが高すぎるかな、と思ったからです。(いつ日にかは挑戦してみたいですが・・・)
BaseCrossDx12
は
D3D12xGPU
をベースに作成されていますが、このほかに
DirectXTex
を使用しています。
DirectXTex
もマイクロソフト社の登録商標です。(こちらは、改変していません)
V05ディレクトリには、BaseCross64風の、Dx12で作成したサンプルが含まれています。プリミティブな形状のみですが、何かの参考になるかもしれません。ご興味があれば見てやってください。
それでは、次ページからは
サンプルの紹介
と
BaseCrossDx12の機能
を述べていきたいと思います。
どなた様も、末永いお付き合い、お願いできれば幸いです。
2025年春 山ノ井 靖(WiZ非常勤講師C++担当)