When every god dead, I can live a normal life...
-
Автор темы
- #1
My sdkwhich base ? or sdk ?
предлагаю хоть код кинуть хукаMy sdk
Рисовать средствами игры поверх определенной панели.Чтобы меню рендерилось как бг
предлагаю хоть код кинуть хука
long D3DAPI Hooks::hkEndScene(IDirect3DDevice9* Direct3DDevice) {
static auto Original = EndScene.GetOriginal<decltype(&hkEndScene)>(Indexes::EndScene);
CMenu::Inst().Setup();
return Original(Direct3DDevice);
} // !Hooks::hkEndScene(...)
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 hookyou need to implement an D3D9 Renderer
u need to implement ur menu like Menu::Get().Render(); from menu.cppC++:long D3DAPI Hooks::hkEndScene(IDirect3DDevice9* Direct3DDevice) { static auto Original = EndScene.GetOriginal<decltype(&hkEndScene)>(Indexes::EndScene); CMenu::Inst().Setup(); return Original(Direct3DDevice); } // !Hooks::hkEndScene(...)
C++: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
I void my CMenu::Render() in CMenu::Setup(), can your tell me different?u need to implement ur menu like Menu::Get().Render(); from menu.cpp
ok u need to implement it in theI void my CMenu::Render() in CMenu::Setup(), can your tell me different?
Подскажи какой сейчас ещё и актуальный паттерн для D3D9 который через shaderapidx9.dllРисовать средствами игры поверх определенной панели.
imgui генерирует геометрию в список отрисовки, затем в хуке D3D9 ты вызываешь оригинальную отрисовку где игра рисует все свои слои (включая оверлей), и затем поверх рисуешься ты, т.е. ты не можешь никак вклиниться где-то между.
Поэтому всегда отрисовка собственными средствами будет поверх консоли, оверлея и самой игры.
Рисовал и в презенте, разницы нетуне рисуйте меню с EndScene, используйте вместо этого Present
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz