テクスチャ2枚はりはり

■1枚のポリゴンに複数のテクスチャを張ってみよう
G9lib.cpp

void	G9lib::Init()
{
		:前回の内容参照
	if( D3DXCreateTextureFromFile(pD3DDevice, L"i01.bmp", &image1 ) != D3D_OK )
		image1	= NULL;
	if( D3DXCreateTextureFromFile(pD3DDevice, L"i02.bmp", &image2 ) != D3D_OK )
		image2	= NULL;
}

//------------------------------------------------------------------------------
//■テスト描画
//------------------------------------------------------------------------------
void	G9lib::TestDraw()
{
		:前回の内容参照
	//-----------------------------------------
	//	モデル登録
	D3DVERTEXTEX2 vtx[ 6 ]={
		{ -5.0f,  5.0f, -5.0f, 1.0f, 0.0f, 1.0f, 0.0f  },
		{ -5.0f, -5.0f, -5.0f, 1.0f, 1.0f, 1.0f, 1.0f  },
		{ -5.0f, -5.0f,  5.0f, 0.0f, 1.0f, 0.0f, 1.0f  },
		{ -5.0f,  5.0f, -5.0f, 1.0f, 0.0f, 1.0f, 0.0f  },
		{ -5.0f, -5.0f,  5.0f, 0.0f, 1.0f, 0.0f, 1.0f  },
		{ -5.0f,  5.0f,  5.0f, 0.0f, 0.0f, 0.0f, 0.0f  }
	};

	//テクスチャ登録
	pD3DDevice->SetTexture( 0, image1 );
	pD3DDevice->SetTexture( 1, image2 );
	// ステージ0の設定
	pD3DDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
	pD3DDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
	pD3DDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
	// ステージ1の設定
	pD3DDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_TEXTURE );
	pD3DDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_CURRENT );
	pD3DDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_ADD );

	pD3DDevice->SetFVF( D3DVERTEXTEX2::FVF );
	pD3DDevice->DrawPrimitiveUP( D3DPT_TRIANGLELIST, 2, vtx, sizeof( D3DVERTEXTEX2 ) );

	pD3DDevice->SetTexture( 0, NULL );
	pD3DDevice->SetTexture( 1, NULL );
	//-----------------------------------------
	//	描画
	pD3DDevice->EndScene();
	pD3DDevice->Present(NULL, NULL, NULL, NULL);
}

G9lib.h

struct D3DVERTEXTEX2 {
	float   x,y,z;
	float   u1,y1;
	float   u2,y2;

	enum { FVF = D3DFVF_XYZ | D3DFVF_TEX2 } ;
};

「i01.bmp

「i02.bmp

の合成した状態、これを描画するとこんな感じです