Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Проблемы с ResizeBuffer.

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
4 Янв 2026
Сообщения
10
Реакции
0
Никак не могу пофиксит свой ресайз буффер, все время игра зависает после изменения разрешения. Функция вызывается, то есть хук рабочий.

ResizeBuffer:
Expand Collapse Copy
    __int64 __fastcall hkResizeBuffers(IDXGISwapChain* pSwapChain, UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags)
    {
        ImGui_ImplDX11_InvalidateDeviceObjects();

        auto result = oResizeBuffers(pSwapChain, BufferCount, Width, Height, NewFormat, SwapChainFlags);

        if (SUCCEEDED(result))
        {
            ID3D11Texture2D* backBuffer;
            pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&backBuffer);
            pDevice->CreateRenderTargetView(backBuffer, nullptr, &pRenderTargetView);
            backBuffer->Release();

            ImGui_ImplDX11_CreateDeviceObjects();
        }

        __log("ResizeBuffer is called!", false);
        return result;
    }

хук:
Expand Collapse Copy
#define RESIZE_BUFFER "48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 54 41 56 41 57 48 83 EC ? 44 8B E2"       
bool resize_hook = Hook::Hook(RESIZE_BUFFER, &hkResizeBuffers,
    reinterpret_cast<void**>(&oResizeBuffers), "GameOverlayRenderer64.dll");
Снимок экрана 2026-04-15 141935.png
 
попробуй это:

C++:
Expand Collapse Copy
__int64 __fastcall hkResizeBuffers(IDXGISwapChain* pSwapChain, UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags)
{
    if (pRenderTargetView) {
        pRenderTargetView->Release();
        pRenderTargetView = nullptr;
    }
    ImGui_ImplDX11_InvalidateDeviceObjects();
    auto result = oResizeBuffers(pSwapChain, BufferCount, Width, Height, NewFormat, SwapChainFlags);
    
    if (SUCCEEDED(result))
    {
        ID3D11Texture2D* backBuffer = nullptr;
        if (SUCCEEDED(pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&backBuffer)))
        {
            pDevice->CreateRenderTargetView(backBuffer, nullptr, &pRenderTargetView);
            backBuffer->Release();
        }
        ImGui_ImplDX11_CreateDeviceObjects();
    }

    return result;
}
 
Назад
Сверху Снизу