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
 | 
						|
 |