#include "imgui.h" #include #ifdef _WIN32 #pragma once #include "imgui_impl_dx11.h" #include "imgui_impl_win32.h" #include #include extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); class ImGuiHelper { private: int window_width, window_height; wchar_t windowTitle; ID3D11Device *g_pd3dDevice = nullptr; ID3D11DeviceContext *g_pd3dDeviceContext = nullptr; IDXGISwapChain *g_pSwapChain = nullptr; static UINT g_ResizeWidth, g_ResizeHeight; ID3D11RenderTargetView *g_pMainRenderTargetView = nullptr; ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f); HWND hWnd = nullptr; WNDCLASSEX wc; private: bool CreateDeviceD3d(HWND hWnd); void CleanupDeviceD3d(); void CreateRenderTarget(); void CleanupRenderTarget(); static LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); public: ImGuiHelper(int width = 1280 , int height = 800,const char* windowTitle = "Window"); ~ImGuiHelper(); ImGuiHelper(ImGuiHelper &&helper) = default; ImGuiHelper(const ImGuiHelper &helper) = default; ImGuiHelper &operator=(const ImGuiHelper &helper) = default; ImGuiHelper &operator=(ImGuiHelper &&helper) = default; void Render(const std::function &context, bool &isRunning); }; #elif __linux #ifndef __ImGuiHelper_H #define __ImGuiHelper_H #include #include "imgui_impl_glfw.h" #include "imgui_impl_opengl3.h" class ImGuiHelper{ private: static const char* glsl_version; std::string windowTitle; GLFWwindow* window = nullptr; ImGuiIO* io; int width, height; public: ImGuiHelper(int width = 1280, int height = 720, const std::string& windowTitle = "Window"); ~ImGuiHelper(); ImGuiHelper(ImGuiHelper &&helper) = default; ImGuiHelper(const ImGuiHelper& helper) = default; ImGuiHelper& operator=(ImGuiHelper&& helper) = default; ImGuiHelper& operator=(const ImGuiHelper& helper) = default; void Render(const std::function& context, bool &isRunning); }; #endif #endif