アフィリエイト広告を利用しています

広告

posted by fanblog

2018年07月22日

《その427》DirectX11アプリ(ユニバーサルWindows)


 DirectX11アプリ(ユニバーサルWindows)

 ファイル(F) -> 新規作成(N) -> プロジェクト(P)
 Visual C++ -> Windowsユニバーサル -> DirectX11アプリ(ユニバーサルWindows)
の順に操作します。

 VS2017 を、このようにして開始すると、3Dアニメーションのサンプルアプリが自動作成されます。
 自分の場合、3DアニメーションDirectX11 の知識が完全にゼロです。基礎的なことから徐々に知識を積み上げていくやり方で進むには、気力・能力ともに不足していると自覚しているため、とりあえず、このサンプルアプリを手掛かりにして調べていくことにします。

 このサンプルアプリは、
  ・F5キー
  ・Ctrlキー + F5キー
等の操作でスタートさせると、キレイな立方体の画像が回転します。

add_e001.png

add_e002.png


 しかし・・・、たくさんのファイルがあって、なにがどうなっているのか 全体を理解するのはムリなので、とりあえず確認できる部分から見ていきたいと思います。

 最初に コンテンツとして分類されている
  Sample3DSceneRenderer.h

  Sample3DSceneRenderer.cpp
を見てみます。

 頂点データや光源の位置などから表示画像を生成するための一連の手順は、レンダリングパイプラインと呼ばれますが、
Sample3DSceneRenderer.h と Sample3DSceneRenderer.cpp は、レンダリングパイプラインにより画像をインスタンス化するレンダラーらしいです。

 三角形が連結した三角形メッシュを用いて立体を表現しますが、次のコードは、メッシュの頂点の位置と色を指定しています。

static const VertexPositionColor cubeVertices[] =
{
{XMFLOAT3(-0.5f, -0.5f, -0.5f), XMFLOAT3(0.0f, 0.0f, 0.0f)}, // 頂点0
{XMFLOAT3(-0.5f, -0.5f, 0.5f), XMFLOAT3(0.0f, 0.0f, 1.0f)}, // 頂点1
{XMFLOAT3(-0.5f, 0.5f, -0.5f), XMFLOAT3(0.0f, 1.0f, 0.0f)}, // 頂点2
{XMFLOAT3(-0.5f, 0.5f, 0.5f), XMFLOAT3(0.0f, 1.0f, 1.0f)}, // 頂点3
{XMFLOAT3( 0.5f, -0.5f, -0.5f), XMFLOAT3(1.0f, 0.0f, 0.0f)}, // 頂点4
{XMFLOAT3( 0.5f, -0.5f, 0.5f), XMFLOAT3(1.0f, 0.0f, 1.0f)}, // 頂点5
{XMFLOAT3( 0.5f, 0.5f, -0.5f), XMFLOAT3(1.0f, 1.0f, 0.0f)}, // 頂点6
{XMFLOAT3( 0.5f, 0.5f, 0.5f), XMFLOAT3(1.0f, 1.0f, 1.0f)}, // 頂点7
};


add_e003_2.png

 例えば、
頂点0 の場合
  座標は (-0.5f, -0.5f, -0.5f)
  色は (0.0f, 0.0f, 0.0f)、すなわち RGB(Red, Green, Blue) が 0,0,0 ですから黒色
頂点1 の場合
  座標は (-0.5f, -0.5f, 0.5f)
  色は (0.0f, 0.0f, 1.0f)、すなわち RGB が 0,0,1 ですから青色
頂点2 の場合
  座標は (-0.5f, 0.5f, -0.5f)
  色は (0.0f, 1.0f, 0.0f)、すなわち RGB が 0,1,0 ですから緑色
といった具合です。


 また、次のコードは三角形メッシュを具体的に表します。

static const unsigned short cubeIndices [] =
{
0,2,1, // -x
1,2,3,

4,5,6, // +x
5,7,6,

0,1,5, // -y
0,5,4,

2,6,7, // +y
2,7,3,

0,4,6, // -z
0,6,2,

1,3,7, // +z
1,7,5,
};


 最初の 三角形021,三角形123 は頂点の順番が 反時計回りになっています。DirectX では、これは、裏面であることを意味します。
また、三角形456,三角形576 は頂点の順番が 時計回りになっています。これは、この面が表面であることを意味します。

 Sample3DSceneRenderer.cpp は VS2017 に組み込まれているサンプルアプリのプログラムなので、ここでは 全体のプログラムの掲載は省略します。必要な場合は VS2017 で確認してください。




この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/7920169
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


検索
<< 2018年08月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
プロフィール
こうすけさんの画像
こうすけ

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


×

この広告は30日以上新しい記事の更新がないブログに表示されております。