Microsoft DirectX 8.0 (Visual Basic)

ステップ 2 : 頂点バッファの設定

カスタム頂点フォーマットが定義されたので、次は頂点を初期化する。Vertices サンプル プロジェクトでは、この処理を行うために、必要な Microsoft® Direct3D® オブジェクトを作成した後、アプリケーション定義関数 InitVB を呼び出している。次のコードでは、3 つのカスタム頂点の値を初期化している。

With Vertices(0): .x = 150: .y =  50: .z = 0.5: .rhw = 1: .color = &HFFFF0000: End With
With Vertices(1): .x = 250: .y = 250: .z = 0.5: .rhw = 1: .color = &HFF00FF00: End With
With Vertices(2): .x =  50: .y = 250: .z = 0.5: .rhw = 1: .color = &HFF00FFFF: End With

上記のコードでは、3 つの頂点に三角形のポイントを設定し、各頂点が放射する色を指定する。最初のポイントは (150, 50) にあり、赤色 (&HFFFF0000) を放射する。2 番目のポイントは (250, 250) にあり、緑色 (&HFF00FF00) を放射する。3 番目のポイントは (50, 250) にあり、青緑色 (&HFF00FFFF) を放射する。これら各ポイントのピクセル深度は 0.5、RHW は 1 である。このベクトル フォーマットの詳細については、「トランスフォーム済み ライティング済みの頂点」を参照すること。

次のステップは、次のコードのように、Direct3DDevice8.CreateVertexBuffer を呼び出して頂点バッファを作成することである。

Set g_VB = g_D3DDevice.CreateVertexBuffer(VertexSizeInBytes * 3, _
                 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT)
If g_VB Is Nothing Then Exit Function

CreateVertexBuffer の最初の 2 つのパラメータは、新しい頂点バッファの必要なサイズと使用方法を Direct3D に指示する。次の 2 つのパラメータは、新しいバッファのベクトル フォーマットおよびメモリ領域を指定する。ベクトル フォーマットは、Vertices サンプル プロジェクトで以前に指定された FVF である D3DFVF_CUSTOMVERTEX である。D3DPOOL_DEFAULT フラグは、頂点バッファを、このバッファに最も適したメモリに作成するよう Direct3D に指示する。最後のパラメータは、作成する頂点バッファのアドレスである。

頂点バッファを作成した後、次のコードのように D3DVertexBuffer8SetData メソッドを呼び出すことによって、このバッファにカスタム頂点のデータが設定される。

D3DVertexBuffer8SetData g_VB, 0, VertexSizeInBytes * 3, 0, Vertices(0)

D3DVertexBuffer8SetData で使用する最初のパラメータは、データを格納する頂点バッファである。2 番目のパラメータは、データが設定されるバッファの先頭からのオフセット (バイト単位) である。3 番目のパラメータは、バッファのサイズをバイト単位で指定する。4 番目のパラメータは、バッファをロックする方法を記述する 1 つ以上のフラグの組み合わせである。このサンプルでは、このパラメータを 0 に設定し、デフォルトのフラグをロックに送信するよう関数に指示している。5 番目のパラメータは、頂点バッファに配置するデータを格納するバッファである。

頂点バッファに頂点が格納されたので、次はディスプレイをレンダリングする。これについては、「ステップ 3 : ディスプレイのレンダリング」で説明する。