C++ 在*原始函数之后运行DirectX代理函数*而不是*之前*?

C++ 在*原始函数之后运行DirectX代理函数*而不是*之前*?,c++,proxy,directx,directx-9,ogre3d,C++,Proxy,Directx,Directx 9,Ogre3d,我有一个代理D3D9.dll,我注意到我的DirectX::Present在游戏中的代理之前被调用 是否可以将其反转(首先是原始函数,然后是我的函数)?我画的一些元素被游戏覆盖了 游戏使用Ogre3D进行渲染 注意:我还想做一些“黑客”操作,比如冻结相机,我注意到以下几点: 在“游戏”DirectX::Present函数之前设置摄像机位置不会产生任何结果,而在“游戏”DirectX::Present调用之后设置摄像机位置会产生我想要的行为。(使用CheatEngine进行测试)通常代理中的结构如

我有一个代理
D3D9.dll
,我注意到我的
DirectX::Present
在游戏中的代理之前被调用

是否可以将其反转(首先是原始函数,然后是我的函数)?我画的一些元素被游戏覆盖了

游戏使用Ogre3D进行渲染

注意:我还想做一些“黑客”操作,比如冻结相机,我注意到以下几点:


在“游戏”
DirectX::Present
函数之前设置摄像机位置不会产生任何结果,而在“游戏”
DirectX::Present
调用之后设置摄像机位置会产生我想要的行为。(使用CheatEngine进行测试)

通常代理中的结构如下:

HRESULT my_IDirect3DDevice9::Present(CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion)
{
    return (m_pIDirect3DDevice9->Present( pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion));
}
要首先完成原始功能,只需执行smth,如:

HRESULT uMod_IDirect3DDevice9::Present(CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion)
{
    HRESULT myresult = (m_pIDirect3DDevice9->Present( pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion));
    *** YOUR CODEWHATEVER ****
    return myresult;
}