テクスチャ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 } ; };