Platform SDK: DirectX |
ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「Direct3D 直接モードの C/C++ チュートリアル」を参照すること。
サンプル Triangle では、三角形を定義する 3 つの頂点と、3D 空間での頂点法線を定義する 1 つの点のベクトル型、合計 4 つの D3DVECTOR 型を定義することにより、アプリケーション定義サブルーチン InitGeometry でジオメトリを初期化する。技術的には、この時点でジオメトリのセット アップを行う必要はない。ジオメトリのセット アップは、レンダリング メソッドを呼び出す前に随時実行できる。
Private Sub InitGeometry() ' 三角形のジオメトリをセット アップする。 Dim p1 As D3DVECTOR, _ p2 As D3DVECTOR, _ p3 As D3DVECTOR, _ vNormal As D3DVECTOR ' 三角形を定義する 3 頂点の値を設定する. p1.x = 0#:p1.y = 5#:p1.z = 0# p2.x = 5#:p2.y = -5#:p2.z = 0# p3.x = -5#:p3.y = -5#:p3.z = 0# ' 三角形の頂点で共有される頂点法線ベクトルを作成する。 ' このベクトルは視点の方向を指す。このチュートリアルでは、 ' 三角形の背面を定義する頂点法線の z 座標が ' 反転されているので注意する。 vNormal.x = 0#:vNormal.y = 0#:vNormal.z = -1#
DirectX7.CreateD3DVertex メソッドでは、D3DVECTOR 型のメンバを使って、各頂点成分を表す値を D3DVERTEX 型に埋め込む。グローバル D3DVERTEX 型配列 g_TriangleVert には、三角形の頂点情報を埋め込む。
' 三角形の前面の 3 頂点を作成する。 g_dx.CreateD3DVertex p1.x, p1.y, p1.z, vNormal.x, vNormal.y, vNormal.z, 0, 0, _ g_TriangleVert(0) g_dx.CreateD3DVertex p2.x, p2.y, p2.z, vNormal.x, vNormal.y, vNormal.z, 0, 0, _ g_TriangleVert(1) g_dx.CreateD3DVertex p3.x, p3.y, p3.z, vNormal.x, vNormal.y, vNormal.z, 0, 0, _ g_TriangleVert(2) ' 三角形の背面に対して同じ処理を実行する。 g_dx.CreateD3DVertex p3.x, p3.y, p3.z, vNormal.x, vNormal.y, -vNormal.z, 0, 0, _ g_TriangleVert(3) g_dx.CreateD3DVertex p2.x, p2.y, p2.z, vNormal.x, vNormal.y, -vNormal.z, 0, 0, _ g_TriangleVert(4) g_dx.CreateD3DVertex p1.x, p1.y, p1.z, vNormal.x, vNormal.y, -vNormal.z, 0, 0, _ g_TriangleVert(5)
上記の部分コードでは、z=0 の平面上に直立する三角形を定義する、3D 空間の 3点 を定義している。Direct3D 関連のオブジェクトをすべて作成し、シーンを初期化して、シーンのジオメトリを定義したら、「ステップ 4 : レンダリング ループを実行する」に示す手順でシーンをレンダリングできる。