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(); }