#define D3DHOOK_TEXTURES //comment this to disable texture hooking DWORD dwOldZEnable; const int MAX_SIZE = 4; int m_Stride; bool FirstInit = false; LPDIRECT3DTEXTURE9 texRed; LPDIRECT3DTEXTURE9 texBlue; LPDIRECT3DTEXTURE9 texOrange; LPDIRECT3DTEXTURE9 texPink; LPDIRECT3DTEXTURE9 texGreen; const BYTE bRed[60] = { 0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 }; const BYTE bBlue[60] = { 0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00 }; const BYTE bOrange[60] = { 0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xF0, 0xB0, 0x00, 0x01 }; const BYTE bGreen[60] = { 0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xA0, 0x00, 0x01, 0xFF, 0xFF }; const BYTE bPink[58] = { 0x42, 0x4D, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x01 }; HRESULT APIENTRY hkIDirect3DDevice9::BeginScene( ) { if( !FirstInit ) // just called once { D3DXCreateTextureFromFileInMemory(m_pD3Ddev, (LPCVOID)&bRed, 60, &texRed); D3DXCreateTextureFromFileInMemory(m_pD3Ddev, (LPCVOID)&bBlue, 60, &texBlue); D3DXCreateTextureFromFileInMemory(m_pD3Ddev, (LPCVOID)&bPink, 58, &texPink); D3DXCreateTextureFromFileInMemory(m_pD3Ddev, (LPCVOID)&bGreen, 60, &texGreen); D3DXCreateTextureFromFileInMemory(m_pD3Ddev, (LPCVOID)&bOrange, 60, &texOrange); FirstInit = true; } return m_pD3Ddev->BeginScene( ); } HRESULT APIENTRY hkIDirect3DDevice9::DrawIndexedPrimitive(D3DPRIMITIVETYPE Type,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount) { if( show ) { //======================================== MARINES ================================================ if( m_Stride==32 && startIndex != 0 ) { for( int mar_val = 0; mar_val <= MAX_SIZE-1; mar_val++ ) { if( NumVertices == mar_AssaultNV[mar_val] && primCount == mar_AssaultPC[mar_val]) { m_pD3Ddev->GetRenderState( D3DRS_ZENABLE, &dwOldZEnable ); m_pD3Ddev->SetRenderState( D3DRS_ZENABLE, D3DZB_FALSE ); m_pD3Ddev->SetTexture( 0, texPink );//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState( D3DRS_ZENABLE, dwOldZEnable ); m_pD3Ddev->SetTexture( 0, texGreen );//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int mar_val = 0; mar_val <= MAX_SIZE-1; mar_val++ ) { if( NumVertices == mar_SpecOpsNV[mar_val] && primCount == mar_SpecOpsPC[mar_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texPink);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int mar_val = 0; mar_val <= MAX_SIZE-1; mar_val++ ) { if( NumVertices == mar_HvyGunrNV[mar_val] && primCount == mar_HvyGunrPC[mar_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texPink);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int mar_val = 0; mar_val <= MAX_SIZE-1; mar_val++ ) { if( NumVertices == mar_DemolNV[mar_val] && primCount == mar_DemolPC[mar_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texPink);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int mar_val = 0; mar_val <= MAX_SIZE-1; mar_val++ ) { if( NumVertices == mar_SniperNV[mar_val] && primCount == mar_SniperPC[mar_val]) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texPink);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } //======================================== OP FOR ================================================ if( m_Stride==32 && startIndex != 0 ) { for( int opf_val = 0; opf_val <= MAX_SIZE-1; opf_val++ ) { if( NumVertices == opf_AssaultNV[opf_val] && primCount == opf_AssaultPC[opf_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int opf_val = 0; opf_val <= MAX_SIZE-1; opf_val++ ) { if( NumVertices == opf_SpecOpsNV[opf_val] && primCount == opf_SpecOpsPC[opf_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int opf_val = 0; opf_val <= MAX_SIZE-1; opf_val++ ) { if( NumVertices == opf_HvyGunrNV[opf_val] && primCount == opf_HvyGunrPC[opf_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int op_val = 0; op_val <= MAX_SIZE-1; op_val++ ) { if( NumVertices == op_DemolNV[op_val] && primCount == op_DemolPC[op_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int op_val = 0; op_val <= MAX_SIZE-1; op_val++ ) { if( NumVertices == op_SniperNV[op_val] && primCount == op_SniperPC[op_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } //======================================== SpecNaz ================================================ if( m_Stride==32 && startIndex != 0 ) { for( int spe_val = 0; spe_val <= MAX_SIZE-1; spe_val++ ) { if( NumVertices == spe_AssaultNV[spe_val] && primCount == spe_AssaultPC[spe_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texOrange);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int spe_val = 0; spe_val <= MAX_SIZE-1; spe_val++ ) { if( NumVertices == spe_SpecOpsNV[spe_val] && primCount == spe_SpecOpsPC[spe_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texOrange);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int spe_val = 0; spe_val <= MAX_SIZE-1; spe_val++ ) { if( NumVertices == spe_HvyGunrNV[spe_val] && primCount == spe_HvyGunrPC[spe_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texOrange);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int spet_val = 0; spet_val <= MAX_SIZE-1; spet_val++ ) { if( NumVertices == spet_DemolNV[spet_val] && primCount == spet_DemolPC[spet_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texOrange);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int spet_val = 0; spet_val <= MAX_SIZE-1; spet_val++ ) { if( NumVertices == spet_SniperNV[spet_val] && primCount == spet_SniperPC[spet_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texOrange);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texGreen);//texture green } } } //========================================== SAS ================================================== if( m_Stride==32 && startIndex != 0 ) { for( int sas_val = 0; sas_val <= MAX_SIZE-1; sas_val++ ) { if( NumVertices == sas_AssaultNV[sas_val] && primCount == sas_AssaultPC[sas_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texBlue);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int sas_val = 0; sas_val <= MAX_SIZE-1; sas_val++ ) { if( NumVertices == sas_SpecOpsNV[sas_val] && primCount == sas_SpecOpsPC[sas_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texBlue);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int sas_val = 0; sas_val <= MAX_SIZE-1; sas_val++ ) { if( NumVertices == sas_HvyGunrNV[sas_val] && primCount == sas_HvyGunrPC[sas_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texBlue);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int sas_val = 0; sas_val <= MAX_SIZE-1; sas_val++ ) { if( NumVertices == sas_DemolNV[sas_val] && primCount == sas_DemolPC[sas_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texBlue);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int sas_val = 0; sas_val <= MAX_SIZE-1; sas_val++ ) { if( NumVertices == sas_SniperNV[sas_val] && primCount == sas_SniperPC[sas_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texBlue);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int sas_val = 0; sas_val <= MAX_SIZE-1; sas_val++ ) { if( NumVertices == sas_Sniper2[sas_val] && primCount == sas_Sniper2PC[sas_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texBlue);//texture green } } } //======================================== ClayMores ================================================ if( m_Stride==32 && startIndex != 0 ) { for( int clay_val = 0; clay_val <= MAX_SIZE-1; clay_val++ ) { if( NumVertices == clay_more1NV[clay_val] && primCount == clay_more1PC[clay_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texBlue);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int clay_val = 0; clay_val <= MAX_SIZE-1; clay_val++ ) { if( NumVertices == clay_more2NV[clay_val] && primCount == clay_more2PC[clay_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texBlue);//texture green } } } if( m_Stride==32 && startIndex != 0 ) { for( int clay_val = 0; clay_val <= MAX_SIZE-1; clay_val++ ) { if( NumVertices == clay_more3NV[clay_val] && primCount == clay_more3PC[clay_val] ) { m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev->SetTexture(0, texRed);//texture red m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable); m_pD3Ddev->SetTexture(0, texBlue);//texture green } } } } return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount); }