はじめに
これは、外部ライブラリを用いずに C# で生の DirectX12 APIを呼べないか試しただけの記録になります。
C# でできるなら、PowerShell からも呼べるだろうと思い試してみました。
実行結果
処理概要
- バッチファイル: 最初のトリガーとなるバッチコマンド
- PowerShell: Add-Type コマンドを使ってC#コードをコンパイルして実行
- C#コード: Win32 APIとDirectX 12を呼び出すコード
- Win32 API: ウィンドウの作成と管理
- DirectX 12: グラフィックスパイプラインの構築と三角形描画
技術的情報
DirectX 12 API は COM(Component Object Model)ベースの API です。
COM はマイクロソフトが開発したソフトウェアコンポーネント間の通信を実現するためのバイナリインターフェース標準です。
C# から COM にアクセスする方法はいくつかあります。
- 自動マーシャリング
- P/Invoke
- vTable直接アクセス
今回使ったテクニックは3つ目の「vTable直接アクセス」という方法になります。
おわりに
このテクニックの使い道があるかわかりません。
HLSL でシェーダー芸みたいなのも出来ると思いますので、バッチファイルで処理が完了したらカッコいい絵を出してみるのも面白いかもしれません。
仕事で使って怒られても保証はしませんので、使う際は自己責任でお願いします。