【DirectX12】DirectX12の初期化

SwapChainの初期化

SwapChainとはレンダリング結果を出力するためのオブジェクトです。
紐づいたビデオアダプタやウィンドウに対してレンダリング結果を出力します。

DXGI_SWAP_CHAIN_DESC1 swapChainDesc{};
swapChainDesc.BufferCount = FrameCount;
swapChainDesc.Width = width;
swapChainDesc.Height = height;
swapChainDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
swapChainDesc.SampleDesc.Count = 1;

ComPtr<IDXGISwapChain1> pSwapChain;
if (FAILED(pFactory->CreateSwapChainForHwnd(
	pCommandQueue.Get(),
	hWnd, // 表示するウィンドウのハンドル
	&swapChainDesc,
	nullptr,
	nullptr,
	&pSwapChain
)))
{
	return false;
}

これでSwapChainが作成できます。
細かな設定は次の通りです。

DXGI_SWAP_CHAIN_DESC1
Width バックバッファの幅
Height バックバッファの高さ
Format バックバッファのフォーマット
Stereo 立体視の有無を指定します。
SampleDesc MSAAを適応するための設定を行います。
ハードウェアに応じて使用できる品質が異なります。
なので使用する場合はデバイスで使用可能な性能を調べてから設定します。
BufferUsage バッファの使用用途を設定します。
今回はシェーダからの出力先として使用するの下記を指定します。
DXGI_USAGE_RENDER_TARGET_OUTPUT
BufferCount バックバッファの数
Scaling バッファのスケーリング方法を設定します。
詳細はDXGI_SCALINGを確認してください。
SwapEffect フロントバッファとバックバッファの入れ替え方法を設定できます。
詳細はDXGI_SWAP_EFFECTを確認してください。
AlphaMode フレームバッファのα地の扱いを指定できます。
詳細はDXGI_ALPHA_MODEを確認してください。
Flags スワップチェインの設定フラグを指定します。
詳細はDXGI_SWAP_CHAIN_FLAGを確認してください。

 

今回の記事に記載した一通りを実装すれば、先ずはDirectX12の実装を進めていく準備ができます。
画面に絵を出すにはまだ少し先が長いので、気長に付き合っていただければと思います。

 

サンプルプログラム

今回のDirectX12の初期化を行ったプロジェクトをアップしています。
必要に応じて参考にしてください。

Download

1 2 3

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です