Platform SDK: DirectX

ステップ 3.3 : ジオメトリを準備する

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「Direct3D 直接モードの C/C++ チュートリアル」を参照すること。

[Visual Basic]

サンプル 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 : レンダリング ループを実行する」に示す手順でシーンをレンダリングできる。