Запускать прокси-функции DirectX *после* исходных функций, а не *до*?

У меня прокси D3D9.dll и я заметил, что мой DirectX::Present вызывается перед прокси из игры.

Можно ли отменить это (сначала исходные функции, затем мои функции)? Некоторые элементы, которые я рисую, игнорируются игрой.

Игра использует Ogre3D для рендеринга.

Примечание. Я также хочу сделать некоторые «хаки», например, заморозить камеру, и я заметил следующие вещи:

Установка положения камеры до функции DirectX::Present игр не дает никаких результатов, а установка положения камеры после вызова игр DirectX::Present приводит к желаемому поведению. (Проверено с CheatEngine)


person Community    schedule 23.03.2013    source источник


Ответы (1)


обычно у вас в прокси такая структура:

HRESULT my_IDirect3DDevice9::Present(CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion)
{
    return (m_pIDirect3DDevice9->Present( pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion));
}

чтобы сначала выполнить исходную функцию, вам просто нужно сделать что-то вроде:

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;
}
person Andreas Hinderberger    schedule 25.03.2014