34.Dx12版サンプルをDx11版に合わせて追加する(3)

今回は2つのDx12版サンプルをGitHubにアップしましたSimpleSample009,010です。
ドキュメントは申し訳ないですが、まだ記述してません。少しサンプルがたまった段階でアップします。

この記事は、
コミットSimplaSample007,008(Dx12版)追加。ライブラリ修正あり
から、
コミットSimplaSample009,010(Dx12版)追加後の修正。
の間の作業です。
GitHubサイト

https://github.com/WiZFramework/BaseCross

を参照して下さい。

コミットが1つ飛んでますが、不具合修正です。

今回はこれまでDx11版のみだったサンプルに、Dx12版を追加したものです。
ですので実行イメージは、Dx11版の同じサンプル番号と同じになります。
今回はライブラリの変更はありません。

今回アップしたサンプルのポイントは3D描画とライティングです。SimplaSample010でライティングが出てきます。
これまではスプライト(2次元)でしたが、いよいよ3次元表現です。

SimplaSample009について

SimplaSample009位置とカラー情報を持つ立方体です。実行イメージは以下になります。

2016082503_1

これまでの2D表現と違うところは、VSPSDrawContextクラスのパイプラインステートとコマンドリストの作成CreateDefault3DPipelineCmdList関数を使用しているところです。
CubeObject::OnCreate関数に記述があります。


void CubeObject::OnCreate() {
    //中略

    //描画コンテキスト
    m_DrawContext = ObjectFactory::Create<VSPSDrawContext>(VSPSDrawContext::CreateParam::CreateCbv);
    m_DrawContext->CreateConstantBuffer(sizeof(m_StaticConstantBuffer));
    m_DrawContext->CreateDefault3DPipelineCmdList<VertexPositionColorTexture, VSPCStatic, PSPCStatic>();

    //中略
}

CreateDefault3DPipelineCmdList関数は、3次元の深度バッファの設定を有効にします。有効にすると、手前にあるオブジェクトが奥のオブジェクトを隠すイメージになります。
また、遠近法のカメラを使ってます。これはコンスタントバッファに入力する、ビュー行列と射影行列で確認ください。
3次元になったからと言って、このサンプルで大きく変わることはありません。今回のサンプルでは、テクスチャやサンプラーは使わないので、


void CubeObject::OnCreate() {
    //中略

    //描画コンテキスト
    m_DrawContext = ObjectFactory::Create<VSPSDrawContext>(VSPSDrawContext::CreateParam::CreateCbv);

    //中略
}

VSPSDrawContext::CreateParam::CreateCbvを渡して構築できます。これはコンスタントバッファのみ持つ、ルートシグネチャの作成を指定してます。

SimplaSample010について

こちらのサンプルはライティングした立方体です。頂点に法線を持たせることで、ライティングが実装できます。左と右の違いフラットかどうかです。フラットについては、Dx11版の説明でも触れましたが、頂点の法線の向きが、面に平行なのか、中心から伸ばしたものか、によって、ライティングが変わります。
実行イメージは以下の通りです。

2016082504

このように立方体の場合はフラットにすると、ちょっとぼんやりしてしまいます。意図がある場合を除いて、通常は面に直角な法線を使ったほうが良いでしょう。

それでは、今回はこの辺で。
次回もよろしくお願いします。

カテゴリー

ピックアップ記事

  1. 2016092201
    今回は前回のサンプルを少し機能を追加しまして、いろんなオブジェクトを追加しています。FullTuto…
  2. 2016092001
    前回更新から時間がたってしまいましたが、今回はフルバージョンチュートリアル003をアップしました。内…
  3. eyecatch
    前回更新から時間がたってしまいましたが、今回はフルバージョンチュートリアル002で懸案となっていまし…
PAGE TOP