DXGIスワップチェインをDirect2DとDirect3Dとで共有する

公開:2013-04-22 11:29
更新:2020-02-15 04:37
カテゴリ:direct2d,directx,dxgi,windows 8,windows,c++

DXGIスワップチェインをDirect2DとDirect3Dとで共有することができた。やはりWindows8では比較的簡単にできる。ここまで来るのに2週間ちかくかかっているので簡単というには憚る感じもするが、まあWindows 7よりは簡単になったということである。

ソースコード

大まかな流れは下記の通りである。大まかかな?

  1. Direct2Dファクトリを作る。
  2. Direct3Dデバイス・Direct3Dコンテキストを作る。
  3. Direct3DデバイスからDXGIデバイスを得る。
  4. DXGIデバイスからDXGIアダプタを得る。
  5. DXGIアダプタからDXGIアウトプットを得る。
  6. DXGIアダプタからDXGIファクトリを得る。
  7. DXGIアウトプットとDirect3Dデバイスより、DXGIスワップチェインを作る。
  8. Direct2Dデバイスを作る。これを作るにはDXGIデバイスが必要。
  9. Direct2DデバイスからDirect2Dコンテキストを作る。
  10. スワップチェインからDirect2D描画用ビットマップリソースを作り、描画ターゲットとしてDirect2Dコンテキストにセットする。
  11. スワップチェインからバックバッファを取得し、Direct3D描画ターゲットビューを作る。
  12. 深度ビューを作成する。
  13. Direct3Dコンテキストに描画ターゲットビュー・深度ビューをセットする。
  14. ビューポートを作成し、Direct3Dコンテキストにセットする。
  15. バーテックスシェーダーを作る。
  16. 入力レイアウトを作る。
  17. ピクセルシェーダーを作る。
  18. バーテックスバッファを作る。
  19. インデックスバッファを作る。
  20. 定数バッファを作る。
  21. テクスチャーをロードする。
  22. ビュー行列を作成する。

だいたいこんな流れであるが、これはあくまても一例である。ほかにもやり方はあるかもしれない。ただ非常に面倒であるということがよくわかると思う。しかしWindows7ではさらに面倒臭かったのだ。

私のような「へたれ」だと、初期化してテスト表示ができただけでかなりの達成感を味わえてしまう。まだまだやることはいっぱいあるのだけれども。。