Platform SDK: DirectX

ステップ 1.1 : 壁セグメントを準備する

[C++]

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

[Visual Basic]

このチュートリアルでは、D3DVERTEX 型のシーンにおける壁セグメントについて説明する。この頂点は、「未トランスフォーム 未ライティングの頂点」である。「未トランスフォーム 未ライティングの頂点」を使用すると、Direct3D が独自の内部アルゴリズムを使ってトランスフォーム & ライティング処理を実行するように要求することができる。

3D 空間で壁セグメントを定義するには、サンプル DrawPrims の以下のコードに示す方法で、頂点の情報を計算して保存する。

Private Sub InitGeometry()
 
' 壁ジオメトリをセット アップする
Dim x As Double, _
y As Double, _
z As Double
        
Dim i As Integer
    
For i = 0 To NUM_WALL_SIDES - 1
x = Sin(2 * pi * i / (NUM_WALL_SIDES - 1))
z = Cos(2 * pi * i / (NUM_WALL_SIDES - 1))
        
Call g_dx.CreateD3DVertex(x * 10#, -0.1 * 10#, z * 10#, -x, 0, -z, 0, 0, g_vWall(2 * i + 0))
Call g_dx.CreateD3DVertex(x * 10#, 0.1 * 10#, z * 10#, -x, 0, -z, 0, 0, g_vWall(2 * i + 1))
        
Next i

上記のコードでは、DirectX7.CreateD3DVertex メソッドを使って、D3DVERTEX 型の配列 g_vWall に頂点成分情報を埋め込む。このコードでは、三角関数を使って頂点の x 座標と z 座標を決める。CreateD3DVertex メソッドを使用する場合、モデル座標で座標を指定する必要がある。「未トランスフォーム 未ライティングの頂点」を使用するので、システムはモデル座標にワールド トランスフォーム、ビュー トランスフォーム、および射影トランスフォームを適用し、シーン内の適切な位置に配置する。また、頂点の x、y、および z 座標を 10 でスケールして、壁セグメントを適切なサイズにする。

シーン内の壁セグメントのジオメトリを定義したら、その他のジオメトリ プリミティブの準備に進むことができる。オブジェクトを定義する順序を意識する必要はない。

3D 空間での円錐の定義については、「ステップ 1.2 : 円錐を準備する」で説明する。