Code:
typedef HRESULT (WINAPI* nDrawIndexedPrimitive)(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE Type, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount);
nDrawIndexedPrimitive pnDrawIndexedPrimitive;
typedef HRESULT (WINAPI* nSetStreamSource)(LPDIRECT3DDEVICE9 pDevice,UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride);
nSetStreamSource pnSetStreamSource;
LPDIRECT3DTEXTURE9 D3Red;
LPDIRECT3DTEXTURE9 D3Green;
unsigned int myStride=NULL;
bool truecheck=true;
HRESULT GenerateTexture(IDirect3DDevice9 *pD3Ddev, IDirect3DTexture9 **ppD3Dtex, DWORD colour32){
if( FAILED(pD3Ddev->CreateTexture(8, 8, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, ppD3Dtex, NULL)) )
return E_FAIL;
WORD colour16 = ((WORD)((colour32>>28)&0xF)<<12)
|(WORD)(((colour32>>20)&0xF)<<8)
|(WORD)(((colour32>>12)&0xF)<<4)
|(WORD)(((colour32>>4)&0xF)<<0);
D3DLOCKED_RECT d3dlr;
(*ppD3Dtex)->LockRect(0, &d3dlr, 0, 0);
WORD *pDst16 = (WORD*)d3dlr.pBits;
for(int xy=0; xy < 8*8; xy++)
*pDst16++ = colour16;
(*ppD3Dtex)->UnlockRect(0);
return S_OK;
}
HRESULT WINAPI hkSetStreamSource(LPDIRECT3DDEVICE9 pDevice,UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride){
if(StreamNumber == 0){
myStride = Stride;
}
return pnSetStreamSource(pDevice, StreamNumber, pStreamData,OffsetInBytes, Stride);
}
HRESULT WINAPI hkDrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDevice,D3DPRIMITIVETYPE Type,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount){
if(truecheck){
GenerateTexture(pDevice, &D3Green,D3DCOLOR_ARGB (255 , 0 , 255 , 0 ));
GenerateTexture(pDevice, &D3Red, D3DCOLOR_ARGB (255 , 255 , 0 , 0 ));
truecheck=false;
}
//HRESULT hRet;
if(nClass.nD3D.WH_Chams && myStride==36){ //nClass.nD3D.WH_Chams
pDevice->SetRenderState(D3DRS_ZENABLE,false);
pDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID);
pDevice->SetTexture(0,D3Red);
//hRet = pnDrawIndexedPrimitive(pDevice, Type, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
pDevice->SetRenderState(D3DRS_ZENABLE,true);
pDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID);
pDevice->SetTexture(0,D3Green);
//pDevice->SetRenderState(D3DRS_FOGENABLE, FALSE); NoFog
}
//else{
//hRet = pnDrawIndexedPrimitive(pDevice, Type, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
//}
return pnDrawIndexedPrimitive(pDevice, Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
//return hRet;
}