71 lines
2.1 KiB
C
71 lines
2.1 KiB
C
|
#include "imgui.h"
|
||
|
#include <functional>
|
||
|
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#include "imgui_impl_dx11.h"
|
||
|
#include "imgui_impl_win32.h"
|
||
|
#include <d3d11.h>
|
||
|
#include <tchar.h>
|
||
|
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<void()> &context, bool &isRunning);
|
||
|
};
|
||
|
|
||
|
#elif __linux
|
||
|
#ifndef __ImGuiHelper_H
|
||
|
#define __ImGuiHelper_H
|
||
|
|
||
|
#include <GLFW/glfw3.h>
|
||
|
#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<void()>& context, bool &isRunning);
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|
||
|
#endif
|
||
|
|