Начинающий
- Статус
- Оффлайн
- Регистрация
- 18 Авг 2020
- Сообщения
- 69
- Реакции
- 3
в оконном режиме работает все отлично, как только переключаюсь на фулл скрин то крашит или не дает развернуть кс
present hook:
HRESULT __fastcall
c_hooks::present_hook(IDXGISwapChain* swap_chain, UINT sync_interval, UINT flags)
{
if (!hooks->render_target_view) {
ID3D11Texture2D* back_buffer;
DXGI_SWAP_CHAIN_DESC desc;
swap_chain->GetDesc(&desc);
hooks->window = desc.OutputWindow;
swap_chain->GetDevice(__uuidof(ID3D11Device), reinterpret_cast<void**>(&hooks->device));
hooks->device->GetImmediateContext(&hooks->context);
swap_chain->GetBuffer(0, __uuidof(ID3D11Texture2D), reinterpret_cast<void**>(&back_buffer));
hooks->device->CreateRenderTargetView(back_buffer, nullptr, &hooks->render_target_view);
if (back_buffer)
back_buffer->Release();
hooks->original_wndproc = reinterpret_cast<WNDPROC>(SetWindowLongPtr(hooks->window, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(wndproc_hook)));
render->initialize(hooks->device, hooks->context, hooks->window);
}
ImGui_ImplDX11_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
ImGui::StyleColorsDark();
menu->paint();
ImGui::EndFrame();
ImGui::Render();
hooks->context->OMSetRenderTargets(1, &hooks->render_target_view, NULL);
ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
return hooks->original_present(swap_chain, sync_interval, flags);
}
resize buffers hook:
HRESULT __fastcall
c_hooks::resize_buffers_hook(IDXGISwapChain* swap_chain, UINT buffer_count, UINT width, UINT height, DXGI_FORMAT new_format, UINT swap_chain_flags)
{
if (hooks->render_target_view) {
hooks->render_target_view->Release();
hooks->render_target_view = nullptr;
}
return hooks->original_resize_buffers(swap_chain, buffer_count, width, height, new_format, swap_chain_flags);
}