Начинающий
-
Автор темы
- #1
В общем ребзятули делаю хук через kiero, хукаю Present для 11 директа, но ImGui менюшка не рисуется. Проверил, функция хукается корректно и она вызывается при рендеринге каждого кадра, в перехват вставил вызов MessageBox, он показывается мне каждый кадр, после нажатия Ok идет прорисовка очередного кадра, что говорит о том, что с версией директа я не ошибся и хукаю все верно. Эта же самая Dll при инжекте в другие игры\семплы директ11 отрабатывает прекрасно, меню рисуется, все в лучших традициях. Но в ARK эта шляпа по какой-то причине отказывается работать. Напоминаю, хук устанавливается корректно, перехваченная функция вызывается каждый кадр, но ImGui не рендерит ничего.
Ниже прилагаю код.
Ниже прилагаю код.
C++:
long __stdcall hkPresent11(IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Flags)
{
static bool init = false;
static ID3D11Device* device;
static DXGI_SWAP_CHAIN_DESC desc;
static ID3D11DeviceContext* context;
if (!init)
{
pSwapChain->GetDesc(&desc);
pSwapChain->GetDevice(__uuidof(ID3D11Device), (void**)&device);
device->GetImmediateContext(&context);
impl::win32::init(desc.OutputWindow);
ImGui::CreateContext();
ImGui_ImplWin32_Init(desc.OutputWindow);
ImGui_ImplDX11_Init(device, context);
init = true;
}
ImGui_ImplDX11_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
impl::showExampleWindow("D3D11");
ImGui::EndFrame();
ImGui::Render();
ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
if (!alive) {
kiero::shutdown();
//device->Release();
//context->Release();
//pSwapChain->Release();
oWndProc = (WNDPROC)SetWindowLongPtr(desc.OutputWindow, GWLP_WNDPROC, (LONGLONG)(oWndProc));
ImGui_ImplDX11_Shutdown();
ImGui_ImplWin32_Shutdown();
ImGui::DestroyContext();
}
//MessageBoxA(0, "Debug Hook", "Debug Hook", 0);
return oPresent(pSwapChain, SyncInterval, Flags);
}