Blame | Last modification | View Log | RSS feed
#pragma once#include "../Overlay.h"class MyDirect3DDevice9 : public IDirect3DDevice9{public:// We need d3d so that we'd use a pointer to MyDirect3D9 instead of the original IDirect3D9 implementor// in functions like GetDirect3D9MyDirect3DDevice9(IDirect3D9* d3d, IDirect3DDevice9* device, COverlay *o) : m_d3d(d3d), m_device(device), m_pOverlay(o){m_pOverlay->init ( this );}/*** IUnknown methods ***/STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj){return m_device->QueryInterface(riid, ppvObj);}STDMETHOD_(ULONG,AddRef)(THIS){return m_device->AddRef();}STDMETHOD_(ULONG,Release)(THIS){ULONG count = m_device->Release();if(0 == count)delete this;return count;}/*** IDirect3DDevice9 methods ***/STDMETHOD(TestCooperativeLevel)(THIS){return m_device->TestCooperativeLevel();}STDMETHOD_(UINT, GetAvailableTextureMem)(THIS){return m_device->GetAvailableTextureMem();}STDMETHOD(EvictManagedResources)(THIS){return m_device->EvictManagedResources();}STDMETHOD(GetDirect3D)(THIS_ IDirect3D9** ppD3D9){// Let the device validate the incoming pointer for usHRESULT hr = m_device->GetDirect3D(ppD3D9);if(SUCCEEDED(hr))*ppD3D9 = m_d3d;return hr;}STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9* pCaps){return m_device->GetDeviceCaps(pCaps);}STDMETHOD(GetDisplayMode)(THIS_ UINT iSwapChain,D3DDISPLAYMODE* pMode){return m_device->GetDisplayMode(iSwapChain, pMode);}STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS *pParameters){return m_device->GetCreationParameters(pParameters);}STDMETHOD(SetCursorProperties)(THIS_ UINT XHotSpot,UINT YHotSpot,IDirect3DSurface9* pCursorBitmap){return m_device->SetCursorProperties(XHotSpot, YHotSpot, pCursorBitmap);}STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y,DWORD Flags){m_device->SetCursorPosition(X, Y, Flags);}STDMETHOD_(BOOL, ShowCursor)(THIS_ BOOL bShow){return m_device->ShowCursor(bShow);}STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters,IDirect3DSwapChain9** pSwapChain){return m_device->CreateAdditionalSwapChain(pPresentationParameters, pSwapChain);}STDMETHOD(GetSwapChain)(THIS_ UINT iSwapChain,IDirect3DSwapChain9** pSwapChain){return m_device->GetSwapChain(iSwapChain, pSwapChain);}STDMETHOD_(UINT, GetNumberOfSwapChains)(THIS){return m_device->GetNumberOfSwapChains();}STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters){return m_device->Reset(pPresentationParameters);}STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion){return m_device->Present(pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);}STDMETHOD(GetBackBuffer)(THIS_ UINT iSwapChain,UINT iBackBuffer,D3DBACKBUFFER_TYPE Type,IDirect3DSurface9** ppBackBuffer){return m_device->GetBackBuffer(iSwapChain, iBackBuffer, Type, ppBackBuffer);}STDMETHOD(GetRasterStatus)(THIS_ UINT iSwapChain,D3DRASTER_STATUS* pRasterStatus){return m_device->GetRasterStatus(iSwapChain, pRasterStatus);}STDMETHOD(SetDialogBoxMode)(THIS_ BOOL bEnableDialogs){return m_device->SetDialogBoxMode(bEnableDialogs);}STDMETHOD_(void, SetGammaRamp)(THIS_ UINT iSwapChain,DWORD Flags,CONST D3DGAMMARAMP* pRamp){return m_device->SetGammaRamp(iSwapChain, Flags, pRamp);}STDMETHOD_(void, GetGammaRamp)(THIS_ UINT iSwapChain,D3DGAMMARAMP* pRamp){return m_device->GetGammaRamp(iSwapChain, pRamp);}STDMETHOD(CreateTexture)(THIS_ UINT Width,UINT Height,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DTexture9** ppTexture,HANDLE* pSharedHandle){return m_device->CreateTexture(Width, Height, Levels, Usage, Format, Pool, ppTexture, pSharedHandle);}STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DVolumeTexture9** ppVolumeTexture,HANDLE* pSharedHandle){return m_device->CreateVolumeTexture(Width, Height, Depth, Levels, Usage, Format, Pool, ppVolumeTexture, pSharedHandle);}STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DCubeTexture9** ppCubeTexture,HANDLE* pSharedHandle){return m_device->CreateCubeTexture(EdgeLength, Levels, Usage, Format, Pool, ppCubeTexture, pSharedHandle);}STDMETHOD(CreateVertexBuffer)(THIS_ UINT Length,DWORD Usage,DWORD FVF,D3DPOOL Pool,IDirect3DVertexBuffer9** ppVertexBuffer,HANDLE* pSharedHandle){return m_device->CreateVertexBuffer(Length, Usage, FVF, Pool, ppVertexBuffer, pSharedHandle);}STDMETHOD(CreateIndexBuffer)(THIS_ UINT Length,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DIndexBuffer9** ppIndexBuffer,HANDLE* pSharedHandle){return m_device->CreateIndexBuffer(Length, Usage, Format, Pool, ppIndexBuffer, pSharedHandle);}STDMETHOD(CreateRenderTarget)(THIS_ UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Lockable,IDirect3DSurface9** ppSurface,HANDLE* pSharedHandle){return m_device->CreateRenderTarget(Width, Height, Format, MultiSample, MultisampleQuality, Lockable, ppSurface, pSharedHandle);}STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Discard,IDirect3DSurface9** ppSurface,HANDLE* pSharedHandle){return m_device->CreateDepthStencilSurface(Width, Height, Format, MultiSample, MultisampleQuality, Discard, ppSurface, pSharedHandle);}STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9* pSourceSurface,CONST RECT* pSourceRect,IDirect3DSurface9* pDestinationSurface,CONST POINT* pDestPoint){return m_device->UpdateSurface(pSourceSurface, pSourceRect, pDestinationSurface, pDestPoint);}STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9* pSourceTexture,IDirect3DBaseTexture9* pDestinationTexture){return m_device->UpdateTexture(pSourceTexture, pDestinationTexture);}STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9* pRenderTarget,IDirect3DSurface9* pDestSurface){return m_device->GetRenderTargetData(pRenderTarget, pDestSurface);}STDMETHOD(GetFrontBufferData)(THIS_ UINT iSwapChain,IDirect3DSurface9* pDestSurface){return m_device->GetFrontBufferData(iSwapChain, pDestSurface);}STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9* pSourceSurface,CONST RECT* pSourceRect,IDirect3DSurface9* pDestSurface,CONST RECT* pDestRect,D3DTEXTUREFILTERTYPE Filter){return m_device->StretchRect(pSourceSurface, pSourceRect, pDestSurface, pDestRect, Filter);}STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9* pSurface,CONST RECT* pRect,D3DCOLOR color){return m_device->ColorFill(pSurface, pRect, color);}STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT Width,UINT Height,D3DFORMAT Format,D3DPOOL Pool,IDirect3DSurface9** ppSurface,HANDLE* pSharedHandle){return m_device->CreateOffscreenPlainSurface(Width, Height, Format, Pool, ppSurface, pSharedHandle);}STDMETHOD(SetRenderTarget)(THIS_ DWORD RenderTargetIndex,IDirect3DSurface9* pRenderTarget){return m_device->SetRenderTarget(RenderTargetIndex, pRenderTarget);}STDMETHOD(GetRenderTarget)(THIS_ DWORD RenderTargetIndex,IDirect3DSurface9** ppRenderTarget){return m_device->GetRenderTarget(RenderTargetIndex, ppRenderTarget);}STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9* pNewZStencil){return m_device->SetDepthStencilSurface(pNewZStencil);}STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9** ppZStencilSurface){return m_device->GetDepthStencilSurface(ppZStencilSurface);}STDMETHOD(BeginScene)(THIS){return m_device->BeginScene();}STDMETHOD(EndScene)(THIS){m_pOverlay->render ( this );return m_device->EndScene();}STDMETHOD(Clear)(THIS_ DWORD Count,CONST D3DRECT* pRects,DWORD Flags,D3DCOLOR Color,float Z,DWORD Stencil){return m_device->Clear(Count, pRects, Flags, Color, Z, Stencil);}STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State,CONST D3DMATRIX* pMatrix){return m_device->SetTransform(State, pMatrix);}STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix){return m_device->GetTransform(State, pMatrix);}STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE State,CONST D3DMATRIX* pMatrix){return m_device->MultiplyTransform(State, pMatrix);}STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9* pViewport){return m_device->SetViewport(pViewport);}STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9* pViewport){return m_device->GetViewport(pViewport);}STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* pMaterial){return m_device->SetMaterial(pMaterial);}STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9* pMaterial){return m_device->GetMaterial(pMaterial);}STDMETHOD(SetLight)(THIS_ DWORD Index,CONST D3DLIGHT9* pLight){return m_device->SetLight(Index, pLight);}STDMETHOD(GetLight)(THIS_ DWORD Index,D3DLIGHT9* pLight){return m_device->GetLight(Index, pLight);}STDMETHOD(LightEnable)(THIS_ DWORD Index,BOOL Enable){return m_device->LightEnable(Index, Enable);}STDMETHOD(GetLightEnable)(THIS_ DWORD Index,BOOL* pEnable){return m_device->GetLightEnable(Index, pEnable);}STDMETHOD(SetClipPlane)(THIS_ DWORD Index,CONST float* pPlane){return m_device->SetClipPlane(Index, pPlane);}STDMETHOD(GetClipPlane)(THIS_ DWORD Index,float* pPlane){return m_device->GetClipPlane(Index, pPlane);}STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State,DWORD Value){return m_device->SetRenderState(State, Value);}STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE State,DWORD* pValue){return m_device->GetRenderState(State, pValue);}STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type,IDirect3DStateBlock9** ppSB){return m_device->CreateStateBlock(Type, ppSB);}STDMETHOD(BeginStateBlock)(THIS){return m_device->BeginStateBlock();}STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9** ppSB){return m_device->EndStateBlock(ppSB);}STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9* pClipStatus){return m_device->SetClipStatus(pClipStatus);}STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9* pClipStatus){return m_device->GetClipStatus(pClipStatus);}STDMETHOD(GetTexture)(THIS_ DWORD Stage,IDirect3DBaseTexture9** ppTexture){return m_device->GetTexture(Stage, ppTexture);}STDMETHOD(SetTexture)(THIS_ DWORD Stage,IDirect3DBaseTexture9* pTexture){return m_device->SetTexture(Stage, pTexture);}STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD* pValue){return m_device->GetTextureStageState(Stage, Type, pValue);}STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD Value){return m_device->SetTextureStageState(Stage, Type, Value);}STDMETHOD(GetSamplerState)(THIS_ DWORD Sampler,D3DSAMPLERSTATETYPE Type,DWORD* pValue){return m_device->GetSamplerState(Sampler, Type, pValue);}STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler,D3DSAMPLERSTATETYPE Type,DWORD Value){return m_device->SetSamplerState(Sampler, Type, Value);}STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses){return m_device->ValidateDevice(pNumPasses);}STDMETHOD(SetPaletteEntries)(THIS_ UINT PaletteNumber,CONST PALETTEENTRY* pEntries){return m_device->SetPaletteEntries(PaletteNumber, pEntries);}STDMETHOD(GetPaletteEntries)(THIS_ UINT PaletteNumber,PALETTEENTRY* pEntries){return m_device->GetPaletteEntries(PaletteNumber, pEntries);}STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT PaletteNumber){return m_device->SetCurrentTexturePalette(PaletteNumber);}STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT *PaletteNumber){return m_device->GetCurrentTexturePalette(PaletteNumber);}STDMETHOD(SetScissorRect)(THIS_ CONST RECT* pRect){return m_device->SetScissorRect(pRect);}STDMETHOD(GetScissorRect)(THIS_ RECT* pRect){return m_device->GetScissorRect(pRect);}STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL bSoftware){return m_device->SetSoftwareVertexProcessing(bSoftware);}STDMETHOD_(BOOL, GetSoftwareVertexProcessing)(THIS){return m_device->GetSoftwareVertexProcessing();}STDMETHOD(SetNPatchMode)(THIS_ float nSegments){return m_device->SetNPatchMode(nSegments);}STDMETHOD_(float, GetNPatchMode)(THIS){return m_device->GetNPatchMode();}STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType,UINT StartVertex,UINT PrimitiveCount){return m_device->DrawPrimitive(PrimitiveType, StartVertex, PrimitiveCount);}STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount){return m_device->DrawIndexedPrimitive(PrimitiveType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);}STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType,UINT PrimitiveCount,CONST void* pVertexStreamZeroData,UINT VertexStreamZeroStride){return m_device->DrawPrimitiveUP(PrimitiveType, PrimitiveCount, pVertexStreamZeroData, VertexStreamZeroStride);}STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType,UINT MinVertexIndex,UINT NumVertices,UINT PrimitiveCount,CONST void* pIndexData,D3DFORMAT IndexDataFormat,CONST void* pVertexStreamZeroData,UINT VertexStreamZeroStride){return m_device->DrawIndexedPrimitiveUP(PrimitiveType, MinVertexIndex, NumVertices, PrimitiveCount, pIndexData, IndexDataFormat, pVertexStreamZeroData, VertexStreamZeroStride);}STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex,UINT DestIndex,UINT VertexCount,IDirect3DVertexBuffer9* pDestBuffer,IDirect3DVertexDeclaration9* pVertexDecl,DWORD Flags){return m_device->ProcessVertices(SrcStartIndex, DestIndex, VertexCount, pDestBuffer, pVertexDecl, Flags);}STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9* pVertexElements,IDirect3DVertexDeclaration9** ppDecl){return m_device->CreateVertexDeclaration(pVertexElements, ppDecl);}STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9* pDecl){return m_device->SetVertexDeclaration(pDecl);}STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9** ppDecl){return m_device->GetVertexDeclaration(ppDecl);}STDMETHOD(SetFVF)(THIS_ DWORD FVF){return m_device->SetFVF(FVF);}STDMETHOD(GetFVF)(THIS_ DWORD* pFVF){return m_device->GetFVF(pFVF);}STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pFunction,IDirect3DVertexShader9** ppShader){return m_device->CreateVertexShader(pFunction, ppShader);}STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9* pShader){return m_device->SetVertexShader(pShader);}STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9** ppShader){return m_device->GetVertexShader(ppShader);}STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT StartRegister,CONST float* pConstantData,UINT Vector4fCount){return m_device->SetVertexShaderConstantF(StartRegister, pConstantData, Vector4fCount);}STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT StartRegister,float* pConstantData,UINT Vector4fCount){return m_device->GetVertexShaderConstantF(StartRegister, pConstantData, Vector4fCount);}STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT StartRegister,CONST int* pConstantData,UINT Vector4iCount){return m_device->SetVertexShaderConstantI(StartRegister, pConstantData, Vector4iCount);}STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT StartRegister,int* pConstantData,UINT Vector4iCount){return m_device->GetVertexShaderConstantI(StartRegister, pConstantData, Vector4iCount);}STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount){return m_device->SetVertexShaderConstantB(StartRegister, pConstantData, BoolCount);}STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT StartRegister,BOOL* pConstantData,UINT BoolCount){return m_device->GetVertexShaderConstantB(StartRegister, pConstantData, BoolCount);}STDMETHOD(SetStreamSource)(THIS_ UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride){return m_device->SetStreamSource(StreamNumber, pStreamData, OffsetInBytes, Stride);}STDMETHOD(GetStreamSource)(THIS_ UINT StreamNumber,IDirect3DVertexBuffer9** ppStreamData,UINT* pOffsetInBytes,UINT* pStride){return m_device->GetStreamSource(StreamNumber, ppStreamData, pOffsetInBytes, pStride);}STDMETHOD(SetStreamSourceFreq)(THIS_ UINT StreamNumber,UINT Setting){return m_device->SetStreamSourceFreq(StreamNumber, Setting);}STDMETHOD(GetStreamSourceFreq)(THIS_ UINT StreamNumber,UINT* pSetting){return m_device->GetStreamSourceFreq(StreamNumber, pSetting);}STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9* pIndexData){return m_device->SetIndices(pIndexData);}STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9** ppIndexData){return m_device->GetIndices(ppIndexData);}STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD* pFunction,IDirect3DPixelShader9** ppShader){return m_device->CreatePixelShader(pFunction, ppShader);}STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9* pShader){return m_device->SetPixelShader(pShader);}STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9** ppShader){return m_device->GetPixelShader(ppShader);}STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT StartRegister,CONST float* pConstantData,UINT Vector4fCount){return m_device->SetPixelShaderConstantF(StartRegister, pConstantData, Vector4fCount);}STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT StartRegister,float* pConstantData,UINT Vector4fCount){return m_device->GetPixelShaderConstantF(StartRegister, pConstantData, Vector4fCount);}STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT StartRegister,CONST int* pConstantData,UINT Vector4iCount){return m_device->SetPixelShaderConstantI(StartRegister, pConstantData, Vector4iCount);}STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT StartRegister,int* pConstantData,UINT Vector4iCount){return m_device->GetPixelShaderConstantI(StartRegister, pConstantData, Vector4iCount);}STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount){return m_device->SetPixelShaderConstantB(StartRegister, pConstantData, BoolCount);}STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT StartRegister,BOOL* pConstantData,UINT BoolCount){return m_device->GetPixelShaderConstantB(StartRegister, pConstantData, BoolCount);}STDMETHOD(DrawRectPatch)(THIS_ UINT Handle,CONST float* pNumSegs,CONST D3DRECTPATCH_INFO* pRectPatchInfo){return m_device->DrawRectPatch(Handle, pNumSegs, pRectPatchInfo);}STDMETHOD(DrawTriPatch)(THIS_ UINT Handle,CONST float* pNumSegs,CONST D3DTRIPATCH_INFO* pTriPatchInfo){return m_device->DrawTriPatch(Handle, pNumSegs, pTriPatchInfo);}STDMETHOD(DeletePatch)(THIS_ UINT Handle){return m_device->DeletePatch(Handle);}STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE Type,IDirect3DQuery9** ppQuery){return m_device->CreateQuery(Type, ppQuery);}private:IDirect3DDevice9* m_device;IDirect3D9* m_d3d;COverlay *m_pOverlay;};