Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Вопрос Меню рендерится поверх стим оверлея

  • Автор темы Автор темы Dylane
  • Дата начала Дата начала
When every god dead, I can live a normal life...
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
330
Реакции
48
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Проблема в этом:
1623517557915.png
1623517636572.png

Как это можно пофиксить? Чтобы меню рендерилось как бг
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Чтобы меню рендерилось как бг
Рисовать средствами игры поверх определенной панели.
imgui генерирует геометрию в список отрисовки, затем в хуке D3D9 ты вызываешь оригинальную отрисовку где игра рисует все свои слои (включая оверлей), и затем поверх рисуешься ты, т.е. ты не можешь никак вклиниться где-то между.
Поэтому всегда отрисовка собственными средствами будет поверх консоли, оверлея и самой игры.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
предлагаю хоть код кинуть хука
C++:
Expand Collapse Copy
long D3DAPI Hooks::hkEndScene(IDirect3DDevice9* Direct3DDevice) {

    static auto Original = EndScene.GetOriginal<decltype(&hkEndScene)>(Indexes::EndScene);

    CMenu::Inst().Setup();

    return Original(Direct3DDevice);

} // !Hooks::hkEndScene(...)
C++:
Expand Collapse Copy
void CMenu::Setup() {

    /* Initialize Styles and Colors once */
    if (!m_bBackendSetuped)
        SetupBackend();

    /* Initialize DX9 and Win32 */
    ImGui_ImplDX9_NewFrame();
    ImGui_ImplWin32_NewFrame();

    /* Create frame */
    ImGui::NewFrame();

    /* Render menu */
    this->Render();

    /* Render visuals, etc... (from imgui render) */
    //Render::Draw();

    /* End frame */
    ImGui::EndFrame();

    /* Render menu from ImGui */
    ImGui::Render();

    /* Render draw lists from draw data */
    ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());

} // !CMenu::Setup(...)
you need to implement an D3D9 Renderer
I void my menu in EndScene hook
 
Последнее редактирование:
C++:
Expand Collapse Copy
long D3DAPI Hooks::hkEndScene(IDirect3DDevice9* Direct3DDevice) {

    static auto Original = EndScene.GetOriginal<decltype(&hkEndScene)>(Indexes::EndScene);

    CMenu::Inst().Setup();

    return Original(Direct3DDevice);

} // !Hooks::hkEndScene(...)
C++:
Expand Collapse Copy
void CMenu::Setup() {

    /* Initialize Styles and Colors once */
    if (!m_bBackendSetuped)
        SetupBackend();

    /* Initialize DX9 and Win32 */
    ImGui_ImplDX9_NewFrame();
    ImGui_ImplWin32_NewFrame();

    /* Create frame */
    ImGui::NewFrame();

    /* Render menu */
    this->Render();

    /* Render visuals, etc... (from imgui render) */
    //Render::Draw();

    /* End frame */
    ImGui::EndFrame();

    /* Render menu from ImGui */
    ImGui::Render();

    /* Render draw lists from draw data */
    ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());

} // !CMenu::Setup(...)

I void my menu in EndScene hook
u need to implement ur menu like Menu::Get().Render(); from menu.cpp
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Рисовать средствами игры поверх определенной панели.
imgui генерирует геометрию в список отрисовки, затем в хуке D3D9 ты вызываешь оригинальную отрисовку где игра рисует все свои слои (включая оверлей), и затем поверх рисуешься ты, т.е. ты не можешь никак вклиниться где-то между.
Поэтому всегда отрисовка собственными средствами будет поверх консоли, оверлея и самой игры.
Подскажи какой сейчас ещё и актуальный паттерн для D3D9 который через shaderapidx9.dll
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу