8
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DirectX12 備忘録

Last updated at Posted at 2019-02-02

##はじめに
DirectX12の個人的なメモ。
概念的なところから、実装まで覚えたことをここに書いていこうと思います。
※あくまで個人的な解釈なので、誤った情報もある可能性があります。

##リンク集

##概念

DXGI

より低レベルな部分を管理し、情報を提供するレイヤー?各バージョンのDirectXで使用することができるらしい。
アダプターの列挙やスワップチェインの作成等をしてくれる。

  • IDXGIFactory~
    DXGIの各種オブジェクトを生成するクラス(だと思う・・・)。
    現在はIDXGIFactory無印~7まで存在するらしい。末尾の数字が上がるとできることが増えるが、OSのバージョン依存がでてくるっぽい。
    こちらのブログに詳しいことが書いてあった。

デバイスクラスとは?

どうやらDirectX12以前から存在する概念らしい。要は接続されているグラフィックボードの情報を詰め込んだクラス。

サーフェス(surface)

ざっくり言うとリソースを格納するメモリのこと言うらしい

フリップモデル

参考になりそうなサイト
https://docs.microsoft.com/ja-jp/windows/desktop/direct3ddxgi/dxgi-flip-model
https://docs.microsoft.com/ja-jp/windows/desktop/direct3ddxgi/for-best-performance--use-dxgi-flip-model

コマンドキュー、コマンドリスト、コマンドアロケータ

/書く予定*****/

##関数たち

IID_PPV_ARGS

引数に与えたインターフェイスのGUIDとポインタをカンマ区切りで返すマクロ。


D3D12CreateDevice

デバイスを作成する関数

  • 第1引数 IUknown *pAadapter
    使用するデバイスを指定します。NULLを指定すると、デフォルトのアダプターが選択されます。
    デフォルトのアダプターというのはIDXGIFacory1::EnumAdaptersで一番最初に取得できるアダプター。
  • 第2引数 D3D_FEATURE_LEVEL *MinimumFeatureLevel
    デバイス作成をするために必要な最小の機能レベル。シェーダーモデルとかDirectXのバージョンとかを指定。

CreateDXGIFactory1

IDXGIFactoryインターフェイスを生成する。末尾の数字は1に限定されていないようで、自分が見たサンプルとかだとIDXGIFactory4とかを渡してたりしてた。

  • 第1,2引数 REFIID riid, void **ppFactory
    IDXGIFactory1のGUIDとポインタを指定する。
  • 戻り値 HRESULT
    S_OK か DXGI_ERRORのいずれかを返す。

CreateCommandQueue

文字通りコマンドキューを作成する関数

D3D12_COMMAND_QUEUE_DESC

  • D3D12_COMMAND_LIST_TYPE Type
    コマンドリストのタイプ
    詳しいことはこちらのブログに書いてあった
  • INT Priority
    プライオリティなので処理優先度だと思う。自分は今の所何も指定してない
  • D3D12_COMMAND_QUEUE_FLAGS Flags
    デフォルトか、タイムアウトを無効にするパラメータの2種類が存在する。
  • UINT NodeMask
    GPU複数存在する場合に使うらしい

CreateSwapChain

スワップチェーンを作成する関数
全画面とウィンドウモードだとフロントバッファが違うらしい。一応覚えておこう。

  • 第1引数 IUnknown *pDevice
    描画関係を担っているクラスなのでDirectX12だとCommandQueue、DirectX11以前だとDeviceクラスを設定する。

DXGI_SWAP_CHAIN_DESC

  • UINT BufferCount
    バッファの数(フロントバッファ込み)
  • DXGI_SWAP_EFFECT SwapEffect
    サーフェスの後処理を指定する
  • UINT Flags
    スワップチェーンがどういった挙動をしてほしいかを細かく指定できる。必要になったらドキュメント読もう

DXGI_MODE_DESC
バックバッファの表示モード

  • DXGI_RATIONAL RefreshRate
    リフレッシュレートだけど特になにも指定しなくてもいいかも
  • DXGI_FORMAT Format
    表示のフォーマット。詳細はDXGI_FORMATを参照(多い)
  • DXGI_MODE_SCANLINE_ORDER ScanlineOrdering
    走査線の描画順とかを指定できるけど、いじる機会がなさそう
  • DXGI_MODE_SCALING Scaling
    モニターの解像度によって何やらスケーリングするらしいのだけれども今の所特に使いそうもない・・・

DXGI_SAMPLE_DESC
マルチサンプリングの設定

  • UINT Count
    サンプル数
  • UINT Quality
    マルチサンプリングのクオリティ

DXGI_USAGE
バックバッファのメモリに関する細かいことを指定できる

DXGI_SWAP_EFFECT
描画後のバッファ(?)の処理方法を指定する

DXGI_SWAP_CHAIN_FLAG


8
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?