Microsoft DirectX 8.0 (C++)

ボリューム テクスチャの使い方

次のコードは、ボリューム テクスチャを使用するために必要な手順を示している。

まず、各頂点に対して 3 つのテクスチャ座標を持つカスタム頂点タイプを指定する。次のコードに例を示す。

struct VOLUMEVERTEX
{
    FLOAT x, y, z;
    DWORD color;
    FLOAT tu, tv, tw;
};

#define D3DFVF_VOLUMEVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|
                             D3DFVF_TEX1|D3DFVF_TEXCOORDSIZE3(0))

次に、頂点にデータを設定する。

VOLUMEVERTEX g_vVertices[4] =
{
    { 1.0f, 1.0f, 0.0f, 0xffffffff, 1.0f, 1.0f, 0.0f },
    {-1.0f, 1.0f, 0.0f, 0xffffffff, 0.0f, 1.0f, 0.0f },
    { 1.0f,-1.0f, 0.0f, 0xffffffff, 1.0f, 0.0f, 0.0f },
    {-1.0f,-1.0f, 0.0f, 0xffffffff, 0.0f, 0.0f, 0.0f }
};

次に、頂点バッファを作成し、頂点のデータを設定する。

次の手順は、IDirect3DDevice8::CreateVolumeTexture メソッドを使用して、ボリューム テクスチャを作成することである。次のコードに例を示す。

LPDIRECT3DVOLUMETEXTURE8 volTexture;

d3dDevice->CreateVolumeTexture( 8, 4, 4, 1, 0, D3DFMT_R8G8B8,
                                D3DPOOL_MANAGED, &volTexture );

プリミティブをレンダリングする前に、カレント テクスチャを前の手順で作成したボリューム テクスチャに設定する。次のコードは、三角形のストリップのレンダリング プロセス全体を示している。

if( SUCCEEDED( d3dDevice->BeginScene() ) )
{
    // ボリューム テクスチャで四角形を描画する。
    d3dDevice->SetTexture( 0, pVolumeTexture );
    d3dDevice->SetVertexShader( D3DFVF_VOLUMEVERTEX );
    d3dDevice->SetStreamSource( 0, pVB, sizeof(VOLUMEVERTEX) );
    d3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2);

   // シーンを終了する。
   d3dDevice->EndScene();
}