运行DirectX代理功能*后*比*前*的原始功能



我有一个代理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;
}

最新更新