diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..c2575b2
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,11 @@
+cmake_minimum_required(VERSION 3.0.0)
+project(3D_Renderer VERSION 0.1.0 LANGUAGES C CXX)
+
+message(STATUS "Generating Engine")
+
+find_package(OpenGL REQUIRED COMPONENTS OpenGL)
+set(ENGINE_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/include)
+set(ENGINE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/lib)
+set(CXX_STANDARD c++17)
+add_subdirectory(src)
+message(STATUS "Finished Generating Engine")
\ No newline at end of file
diff --git a/Renderer3D.vcxproj b/Renderer3D.vcxproj
index 3023875..dd25ca6 100644
--- a/Renderer3D.vcxproj
+++ b/Renderer3D.vcxproj
@@ -70,13 +70,18 @@
- .\include;$(IncludePath)
+ C:\Users\Hack45\source\repos\Renderer3D\include;.\include;$(IncludePath);C:\Users\Hack45\source\repos\Renderer3D\include
.\lib;$(LibraryPath)
+ $(PublicIncludeDirectories)
.\include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
.\lib;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)
+
+ $(PublicIncludeDirectories)
+ C:\Users\Hack45\source\repos\Renderer3D\include;$(VC_IncludePath);$(WindowsSDK_IncludePath);;C:\Users\Hack45\source\repos\Renderer3D\include
+
Level3
@@ -137,52 +142,53 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -191,36 +197,35 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Renderer3D.vcxproj.filters b/Renderer3D.vcxproj.filters
index 9ec950f..c016253 100644
--- a/Renderer3D.vcxproj.filters
+++ b/Renderer3D.vcxproj.filters
@@ -60,61 +60,61 @@
-
+
Archivos de origen
-
+
Archivos de origen
-
+
Archivos de origen\Util
-
+
Include
-
+
Archivos de origen
-
+
Archivos de origen
-
+
Archivos de origen\Util
-
+
Archivos de origen
-
+
Archivos de origen
-
+
Archivos de origen
-
+
Archivos de origen\Managers
-
+
Archivos de origen
-
+
Archivos de origen
-
+
Archivos de origen\Components
-
+
Archivos de origen\Components
-
+
Archivos de origen
-
+
Archivos de origen\Components
-
+
Archivos de origen
-
+
Archivos de origen
@@ -135,31 +135,31 @@
Include\imgui
-
+
Archivos de origen
-
+
Archivos de origen
-
+
Archivos de origen
-
+
Archivos de origen
-
+
Archivos de origen
-
+
Archivos de origen\RenderPass
-
+
Archivos de origen\RenderPass
-
+
Archivos de origen\RenderPass
-
+
Archivos de origen\RenderPass
@@ -176,85 +176,82 @@
Include
-
+
Archivos de encabezado
-
- Include
-
-
+
Archivos de encabezado
-
+
Archivos de encabezado
-
+
Archivos de encabezado
-
+
Archivos de encabezado
-
+
Archivos de encabezado
-
+
Archivos de encabezado
-
+
Archivos de encabezado\Util
-
+
Archivos de encabezado\Util
-
+
Archivos de encabezado
-
+
Archivos de encabezado
-
+
Archivos de encabezado\Util
-
+
Archivos de encabezado
-
+
Archivos de encabezado\Util
-
+
Archivos de encabezado\Managers
-
+
Archivos de encabezado\Managers
-
+
Archivos de encabezado\Managers
-
+
Archivos de encabezado\Managers
-
+
Archivos de encabezado
-
+
Archivos de encabezado
-
+
Archivos de encabezado\Components
-
+
Archivos de encabezado\Components
-
+
Archivos de encabezado\Managers
-
+
Archivos de encabezado\Components
-
+
Archivos de encabezado
-
+
Archivos de encabezado
@@ -281,33 +278,36 @@
Include\imgui
-
+
Archivos de encabezado\Interfaces
-
+
Archivos de encabezado
-
+
Archivos de encabezado
-
+
Archivos de encabezado
-
+
Archivos de encabezado
-
+
Archivos de encabezado\RenderPass
-
+
Archivos de encabezado\RenderPass
-
+
Archivos de encabezado\RenderPass
-
+
Archivos de encabezado\RenderPass
+
+ Archivos de encabezado
+
diff --git a/Asset.cpp b/src/Asset.cpp
similarity index 100%
rename from Asset.cpp
rename to src/Asset.cpp
diff --git a/Asset.h b/src/Asset.h
similarity index 100%
rename from Asset.h
rename to src/Asset.h
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..a59e4e0
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,211 @@
+
+message(STATUS "-- Generating Core Engine")
+
+set(3D_Renderer_core_SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/Asset.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Color.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Component.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Editor.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Engine.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Entity.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/FluidSimulation.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/FrameBuffer.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Input.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/IO.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/logger.cpp
+ # ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Material.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Mesh.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/MeshRenderer.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Model.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/ParticleSystem.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Renderer.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/RenderPass_Opaque.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/RenderPass_ShadowMap.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/RenderPass_Transparent.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/RenderPass_VolumetricLight.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Scene.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Shader.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Texture.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Transform.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/VolumetricCloud.cpp
+)
+
+set(3D_Renderer_core_HEADERS
+ ${CMAKE_CURRENT_SOURCE_DIR}/Asset.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Camera.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Color.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Component.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Editor.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Engine.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Entity.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/FluidSimulation.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/FrameBuffer.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/IEditorGUISelectable.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Input.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/IO.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/KeyCode.hpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/LightSource.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/logger.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Material.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/MaterialManager.hpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Mesh.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/MeshRenderer.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Model.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/ModelManager.hpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/ParticleSystem.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Renderer.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/RenderPass_Opaque.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/RenderPass_ShadowMap.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/RenderPass_Transparent.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/RenderPass_VolumetricLight.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Scene.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/Shader.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/ShaderManager.hpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/TestRender.hpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Texture.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/TextureManager.hpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Transform.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/VolumetricCloud.h
+)
+
+set(3D_Renderer_imgui
+ ${ENGINE_INCLUDE}/imgui/imconfig.h
+ ${ENGINE_INCLUDE}/imgui/imgui_demo.cpp
+ ${ENGINE_INCLUDE}/imgui/imgui_draw.cpp
+ ${ENGINE_INCLUDE}/imgui/imgui_internal.h
+ ${ENGINE_INCLUDE}/imgui/imgui_widgets.cpp
+ ${ENGINE_INCLUDE}/imgui/imgui.cpp
+ ${ENGINE_INCLUDE}/imgui/imgui.h
+ ${ENGINE_INCLUDE}/imgui/imstb_rectpack.h
+ ${ENGINE_INCLUDE}/imgui/imstb_textedit.h
+ ${ENGINE_INCLUDE}/imgui/imstb_truetype.h
+ ${ENGINE_INCLUDE}/imgui/examples/imgui_impl_glfw.cpp
+ ${ENGINE_INCLUDE}/imgui/examples/imgui_impl_glfw.h
+ ${ENGINE_INCLUDE}/imgui/examples/imgui_impl_opengl3.h
+ ${ENGINE_INCLUDE}/imgui/examples/imgui_impl_opengl3.cpp
+)
+
+set(3D_Renderer_assimp
+ ${ENGINE_INCLUDE}/assimp/aabb.h
+ ${ENGINE_INCLUDE}/assimp/ai_assert.h
+ ${ENGINE_INCLUDE}/assimp/anim.h
+ ${ENGINE_INCLUDE}/assimp/BaseImporter.h
+ ${ENGINE_INCLUDE}/assimp/Bitmap.h
+ ${ENGINE_INCLUDE}/assimp/BlobIOSystem.h
+ ${ENGINE_INCLUDE}/assimp/ByteSwapper.h
+ ${ENGINE_INCLUDE}/assimp/camera.h
+ ${ENGINE_INCLUDE}/assimp/cexport.h
+ ${ENGINE_INCLUDE}/assimp/cfileio.h
+ ${ENGINE_INCLUDE}/assimp/cimport.h
+ ${ENGINE_INCLUDE}/assimp/color4.h
+ ${ENGINE_INCLUDE}/assimp/color4.inl
+ ${ENGINE_INCLUDE}/assimp/config.h
+ ${ENGINE_INCLUDE}/assimp/config.h.in
+ ${ENGINE_INCLUDE}/assimp/CreateAnimMesh.h
+ ${ENGINE_INCLUDE}/assimp/DefaultIOStream.h
+ ${ENGINE_INCLUDE}/assimp/DefaultIOSystem.h
+ ${ENGINE_INCLUDE}/assimp/DefaultLogger.hpp
+ ${ENGINE_INCLUDE}/assimp/Defines.h
+ ${ENGINE_INCLUDE}/assimp/defs.h
+ ${ENGINE_INCLUDE}/assimp/Exceptional.h
+ ${ENGINE_INCLUDE}/assimp/Exporter.hpp
+ ${ENGINE_INCLUDE}/assimp/fast_atof.h
+ ${ENGINE_INCLUDE}/assimp/GenericProperty.h
+ ${ENGINE_INCLUDE}/assimp/Hash.h
+ ${ENGINE_INCLUDE}/assimp/Importer.hpp
+ ${ENGINE_INCLUDE}/assimp/importerdesc.h
+ ${ENGINE_INCLUDE}/assimp/IOStream.hpp
+ ${ENGINE_INCLUDE}/assimp/IOStreamBuffer.h
+ ${ENGINE_INCLUDE}/assimp/IOSystem.hpp
+ ${ENGINE_INCLUDE}/assimp/irrXMLWrapper.h
+ ${ENGINE_INCLUDE}/assimp/light.h
+ ${ENGINE_INCLUDE}/assimp/LineSplitter.h
+ ${ENGINE_INCLUDE}/assimp/LogAux.h
+ ${ENGINE_INCLUDE}/assimp/Logger.hpp
+ ${ENGINE_INCLUDE}/assimp/LogStream.hpp
+ ${ENGINE_INCLUDE}/assimp/Macros.h
+ ${ENGINE_INCLUDE}/assimp/material.h
+ ${ENGINE_INCLUDE}/assimp/material.inl
+ ${ENGINE_INCLUDE}/assimp/MathFunctions.h
+ ${ENGINE_INCLUDE}/assimp/matrix3x3.h
+ ${ENGINE_INCLUDE}/assimp/matrix3x3.inl
+ ${ENGINE_INCLUDE}/assimp/matrix4x4.h
+ ${ENGINE_INCLUDE}/assimp/matrix4x4.inl
+ ${ENGINE_INCLUDE}/assimp/MemoryIOWrapper.h
+ ${ENGINE_INCLUDE}/assimp/mesh.h
+ ${ENGINE_INCLUDE}/assimp/metadata.h
+ ${ENGINE_INCLUDE}/assimp/NullLogger.hpp
+ ${ENGINE_INCLUDE}/assimp/ParsingUtils.h
+ ${ENGINE_INCLUDE}/assimp/pbrmaterial.h
+ ${ENGINE_INCLUDE}/assimp/postprocess.h
+ ${ENGINE_INCLUDE}/assimp/Profiler.h
+ ${ENGINE_INCLUDE}/assimp/ProgressHandler.hpp
+ ${ENGINE_INCLUDE}/assimp/qnan.h
+ ${ENGINE_INCLUDE}/assimp/quaternion.h
+ ${ENGINE_INCLUDE}/assimp/quaternion.inl
+ ${ENGINE_INCLUDE}/assimp/RemoveComments.h
+ ${ENGINE_INCLUDE}/assimp/scene.h
+ ${ENGINE_INCLUDE}/assimp/SceneCombiner.h
+ ${ENGINE_INCLUDE}/assimp/SGSpatialSort.h
+ ${ENGINE_INCLUDE}/assimp/SkeletonMeshBuilder.h
+ ${ENGINE_INCLUDE}/assimp/SmoothingGroups.h
+ ${ENGINE_INCLUDE}/assimp/SmoothingGroups.inl
+ ${ENGINE_INCLUDE}/assimp/SpatialSort.h
+ ${ENGINE_INCLUDE}/assimp/StandardShapes.h
+ ${ENGINE_INCLUDE}/assimp/StreamReader.h
+ ${ENGINE_INCLUDE}/assimp/StreamWriter.h
+ ${ENGINE_INCLUDE}/assimp/StringComparison.h
+ ${ENGINE_INCLUDE}/assimp/StringUtils.h
+ ${ENGINE_INCLUDE}/assimp/Subdivision.h
+ ${ENGINE_INCLUDE}/assimp/texture.h
+ ${ENGINE_INCLUDE}/assimp/TinyFormatter.h
+ ${ENGINE_INCLUDE}/assimp/types.h
+ ${ENGINE_INCLUDE}/assimp/vector2.h
+ ${ENGINE_INCLUDE}/assimp/vector2.inl
+ ${ENGINE_INCLUDE}/assimp/vector3.h
+ ${ENGINE_INCLUDE}/assimp/vector3.inl
+ ${ENGINE_INCLUDE}/assimp/version.h
+ ${ENGINE_INCLUDE}/assimp/Vertex.h
+ ${ENGINE_INCLUDE}/assimp/XMLTools.h
+ ${ENGINE_INCLUDE}/assimp/ZipArchiveIOSystem.h
+)
+
+message(STATUS "stb_image: ${ENGINE_INCLUDE}/stb_image.h")
+
+set(3D_Renderer_FILES
+ ${3D_Renderer_assimp}
+ ${3D_Renderer_imgui}
+ ${ENGINE_INCLUDE}/stb_image.h
+ ${ENGINE_INCLUDE}/glad.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/glad.c
+ ${ENGINE_INCLUDE}/KHR/khrplatform.h
+ ${3D_Renderer_core_SOURCES}
+ ${3D_Renderer_core_HEADERS}
+)
+
+# Add the 3D_Renderer library to the project
+message(STATUS "-- Adding Core Engine Library")
+add_library(3D_Renderer ${3D_Renderer_FILES})
+
+target_include_directories(3D_Renderer PUBLIC
+ ${ENGINE_INCLUDE}
+)
+
+target_link_libraries(3D_Renderer PRIVATE
+ ${ENGINE_LIB}/glfw3.lib
+ ${ENGINE_LIB}/assimp-vc142-mtd.lib
+)
+
+# target_compile_options(3D_Renderer PRIVATE --std=c++17)
+
+add_executable(3D_Renderer_exe ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp ${3D_Renderer_FILES})
+
+target_include_directories(3D_Renderer_exe PUBLIC
+ ${ENGINE_INCLUDE}
+)
+
+target_link_libraries(3D_Renderer_exe PRIVATE
+ ${ENGINE_LIB}/glfw3.lib
+ ${ENGINE_LIB}/assimp-vc142-mtd.lib
+)
\ No newline at end of file
diff --git a/Camera.h b/src/Camera.h
similarity index 97%
rename from Camera.h
rename to src/Camera.h
index 69879b4..e713da7 100644
--- a/Camera.h
+++ b/src/Camera.h
@@ -2,7 +2,7 @@
#define CAMERA_H
#include "glad.h"
-#include "glm/glm.hpp""
+#include "glm/glm.hpp"
#include "glm/gtc/matrix_transform.hpp"
#include
@@ -46,7 +46,8 @@ class Camera
float ortoFrustrum_Horizontal = 250;
float ortoFrustrum_Vertical = 250;
- float near = 1.f, far = 1000;
+ float nearClip = 1.f;
+ float farClip = 1000;
float aspectRatio = 800 / 450;
// constructor with vectors
@@ -78,9 +79,9 @@ class Camera
glm::mat4 GetProjectionMatrix() {
if (isOrtographic)
- return glm::ortho(-(ortoFrustrum_Horizontal / 2), ortoFrustrum_Horizontal / 2, -(ortoFrustrum_Vertical / 2), ortoFrustrum_Vertical / 2, near, far);
+ return glm::ortho(-(ortoFrustrum_Horizontal / 2), ortoFrustrum_Horizontal / 2, -(ortoFrustrum_Vertical / 2), ortoFrustrum_Vertical / 2, nearClip, farClip);
else
- return glm::perspective(glm::radians(Zoom), aspectRatio, near, far);
+ return glm::perspective(glm::radians(Zoom), aspectRatio, nearClip, farClip);
}
glm::mat4 GetViewProjectionMatrix() {
diff --git a/Color.cpp b/src/Color.cpp
similarity index 100%
rename from Color.cpp
rename to src/Color.cpp
diff --git a/Color.h b/src/Color.h
similarity index 97%
rename from Color.h
rename to src/Color.h
index 4cc2d31..9ad1f6b 100644
--- a/Color.h
+++ b/src/Color.h
@@ -1,5 +1,5 @@
#pragma once
-#include "include/glm/glm.hpp"
+#include "glm/glm.hpp"
struct Color {
Color(float r, float g, float b, float a) {
diff --git a/Component.cpp b/src/Component.cpp
similarity index 100%
rename from Component.cpp
rename to src/Component.cpp
diff --git a/Component.h b/src/Component.h
similarity index 100%
rename from Component.h
rename to src/Component.h
diff --git a/Editor.cpp b/src/Editor.cpp
similarity index 98%
rename from Editor.cpp
rename to src/Editor.cpp
index 495ee9b..dbfbe51 100644
--- a/Editor.cpp
+++ b/src/Editor.cpp
@@ -422,7 +422,8 @@ namespace Engine
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", deltatime * 1000.f, 1.f / (deltatime));
ImGui::End();
- ImGuiWindowFlags windowsFlags = ImGuiWindowFlags_HorizontalScrollbar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove;
+ // ImGuiWindowFlags windowsFlags = ImGuiWindowFlags_HorizontalScrollbar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove;
+ ImGuiWindowFlags windowsFlags = ImGuiWindowFlags_HorizontalScrollbar | ImGuiWindowFlags_NoCollapse;
//Resources
if (ImGui::Begin("Resources", NULL, windowsFlags)) {
@@ -458,7 +459,7 @@ namespace Engine
//Properties
if (ImGui::Begin("Properties", NULL, windowsFlags)) {
- if(selected)
+ if(selected != nullptr)
selected->drawEditorGUI_Properties();
}
ImGui::End();
diff --git a/Editor.h b/src/Editor.h
similarity index 96%
rename from Editor.h
rename to src/Editor.h
index dcfd773..c2d24b2 100644
--- a/Editor.h
+++ b/src/Editor.h
@@ -44,7 +44,9 @@ namespace Engine
//Variables-----------------------------------
//Methods-------------------------------------
- Editor() {}
+ Editor() {
+ selected = nullptr;
+ }
Editor(Editor const&) = delete;
Editor& operator=(Editor const&) = delete;
~Editor() {};
diff --git a/Engine.cpp b/src/Engine.cpp
similarity index 95%
rename from Engine.cpp
rename to src/Engine.cpp
index a3789c3..6c1689f 100644
--- a/Engine.cpp
+++ b/src/Engine.cpp
@@ -4,9 +4,9 @@
#include
#include
-#include "include/imgui/imgui.h"
-#include "include/imgui/examples/imgui_impl_glfw.h"
-#include "include/imgui/examples/imgui_impl_opengl3.h"
+#include "imgui/imgui.h"
+#include "imgui/examples/imgui_impl_glfw.h"
+#include "imgui/examples/imgui_impl_opengl3.h"
#include
#include