DirectX11初期化と画面クリア

DirectX11を使ってウインドウ画面を指定色でクリアするプログラムを作成。
これでDX11の初期化、ウインドウ画面の表示、終了処理までの基本的な流れを知る。

DirectX11初期化&画面クリア
DirectX11初期化&画面クリア

プログラムの説明
zg_dx11.h/cpp:DX11関連のプログラム
InitDX11.cpp:メッセージループ処理を変更
プログラムの流れや細かい設定などの説明は省略、ソースコードを見てください。
今後作成するプログラムは、
「DirectX11、ハードウェア対応」(SSE/SSE2対応CPU)
に限定する予定なので、DX9,10やハードウェアの対応のチェックを省略しています。

●デバイス ID3D11Device
DirectX11の中心になるクラス。
全体の管理とバッファ、シェーダ、テクスチャなどのリソース作成などを行う。
DX9とは違って、このクラスは描画関係のメンバ関数を持たない。

●デバイスコンテキスト ID3D11DeviceContext
描画処理を行うクラス。
内部的には、レンダリングコマンドと呼ばれるバイナリデータを作成し、GPUに送る。GPUがレンダリングコマンドを解析することで実際の描画処理が行われる。
複数作成することができるため、レンダリングコマンドを事前に作成したり、スレッドでの並列処理が可能になる。(たぶん、要検証)マルチコアCPUでは並列処理によって高速化が期待できる。

●スワップチェイン IDXGISwapChain
ウインドウへの表示やダブルバッファリングなどを行うクラス。
マルチサンプリング、リフレッシュレートなどの設定もできるみたい。今回はサンプルプログラムの設定をそのまま使用。

●ID3D11RenderTargetView
レンダリング結果の出力先を管理するクラス。
DX9ではデバイスクラスにメンバ関数が用意されていたけれど、DX11ではこのクラスに分離されている。各クラスのメンバが少ないのでわかりやすくレファレンスも見やすい。

●画面のクリア
デバイスコンテキストの画面クリア関数の呼び出し
スワップチェインの画面切り替え
InitDX11.cppのメッセージループから呼び出し

●メッセージループ
InitDX11.cpp
VS2012のWin32プロジェクト作成では、メッセージが来た時だけメッセージ処理を実行するようになっている。それだとレンダリングの処理が繰り返し実行されないため、常にメッセージが来るか監視して、あればメッセージ処理、なければレンダリング用の関数を呼び出すように修正。

サンプルダウンロード DirectX11で画面クリア

※まだ詳しく調べていないため、間違っているかもしれません。

「DirectX11初期化と画面クリア」への1件のフィードバック

コメントを残す

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

認証:数字を入力してください(必須) * Time limit is exhausted. Please reload CAPTCHA.