mirror of
https://github.com/gwm17/Specter.git
synced 2024-11-22 18:28:52 -05:00
Added very barebones renderer to facilitate clearing and setting the background. Added ImPlot for the desired plotting functionality.
This commit is contained in:
parent
e7ae9301e4
commit
7001ef21a4
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -8,3 +8,6 @@
|
||||||
[submodule "Navigator/vendor/glfw"]
|
[submodule "Navigator/vendor/glfw"]
|
||||||
path = Navigator/vendor/glfw
|
path = Navigator/vendor/glfw
|
||||||
url = https://github.com/gwm17/glfw.git
|
url = https://github.com/gwm17/glfw.git
|
||||||
|
[submodule "Navigator/vendor/implot"]
|
||||||
|
path = Navigator/vendor/implot
|
||||||
|
url = https://github.com/gwm17/implot.git
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
#include "Renderer/Renderer.h"
|
||||||
|
#include "Renderer/RenderCommand.h"
|
||||||
|
|
||||||
namespace Navigator {
|
namespace Navigator {
|
||||||
|
|
||||||
|
@ -57,6 +59,9 @@ namespace Navigator {
|
||||||
while(m_runFlag)
|
while(m_runFlag)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
RenderCommand::SetClearColor(m_bckgnd_color);
|
||||||
|
RenderCommand::Clear();
|
||||||
|
|
||||||
for(auto layer : m_stack)
|
for(auto layer : m_stack)
|
||||||
layer->OnUpdate();
|
layer->OnUpdate();
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,8 @@ namespace Navigator {
|
||||||
std::unique_ptr<Window> m_window;
|
std::unique_ptr<Window> m_window;
|
||||||
ImGuiLayer* m_imgui_layer;
|
ImGuiLayer* m_imgui_layer;
|
||||||
bool m_runFlag;
|
bool m_runFlag;
|
||||||
|
|
||||||
|
float m_bckgnd_color[4] = {0.1, 0.1, 0.1, 1.0};
|
||||||
|
|
||||||
static Application* s_instance;
|
static Application* s_instance;
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include "Navigator/NavCore.h"
|
#include "Navigator/NavCore.h"
|
||||||
|
|
||||||
#include "imgui.h"
|
#include "imgui.h"
|
||||||
|
#include "implot.h"
|
||||||
#include "backends/imgui_impl_opengl3.h"
|
#include "backends/imgui_impl_opengl3.h"
|
||||||
#include "backends/imgui_impl_glfw.h"
|
#include "backends/imgui_impl_glfw.h"
|
||||||
|
|
||||||
|
@ -23,7 +24,11 @@ namespace Navigator {
|
||||||
void ImGuiLayer::OnAttach()
|
void ImGuiLayer::OnAttach()
|
||||||
{
|
{
|
||||||
IMGUI_CHECKVERSION();
|
IMGUI_CHECKVERSION();
|
||||||
|
|
||||||
|
NAV_INFO("Creating ImGui Context...");
|
||||||
|
|
||||||
ImGui::CreateContext();
|
ImGui::CreateContext();
|
||||||
|
ImPlot::CreateContext();
|
||||||
|
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
|
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
|
||||||
|
@ -45,12 +50,15 @@ namespace Navigator {
|
||||||
|
|
||||||
ImGui_ImplGlfw_InitForOpenGL(window, true);
|
ImGui_ImplGlfw_InitForOpenGL(window, true);
|
||||||
ImGui_ImplOpenGL3_Init("#version 410");
|
ImGui_ImplOpenGL3_Init("#version 410");
|
||||||
|
|
||||||
|
NAV_INFO("ImGui Finished initializing.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImGuiLayer::OnDetach()
|
void ImGuiLayer::OnDetach()
|
||||||
{
|
{
|
||||||
ImGui_ImplOpenGL3_Shutdown();
|
ImGui_ImplOpenGL3_Shutdown();
|
||||||
ImGui_ImplGlfw_Shutdown();
|
ImGui_ImplGlfw_Shutdown();
|
||||||
|
ImPlot::DestroyContext();
|
||||||
ImGui::DestroyContext();
|
ImGui::DestroyContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,5 +94,6 @@ namespace Navigator {
|
||||||
{
|
{
|
||||||
static bool show = true;
|
static bool show = true;
|
||||||
ImGui::ShowDemoWindow(&show);
|
ImGui::ShowDemoWindow(&show);
|
||||||
|
ImPlot::ShowDemoWindow();
|
||||||
}
|
}
|
||||||
}
|
}
|
6
Navigator/src/Navigator/Renderer/RenderCommand.cpp
Normal file
6
Navigator/src/Navigator/Renderer/RenderCommand.cpp
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#include "RenderCommand.h"
|
||||||
|
#include "Platform/OpenGL/OpenGLRendererAPI.h"
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
RendererAPI* RenderCommand::s_api = new OpenGLRendererAPI();
|
||||||
|
}
|
19
Navigator/src/Navigator/Renderer/RenderCommand.h
Normal file
19
Navigator/src/Navigator/Renderer/RenderCommand.h
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef RENDER_COMMAND_H
|
||||||
|
#define RENDER_COMMAND_H
|
||||||
|
|
||||||
|
#include "RendererAPI.h"
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
|
||||||
|
class RenderCommand
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
inline static void SetClearColor(const float* color_array) { s_api->SetClearColor(color_array); }
|
||||||
|
inline static void Clear() { s_api->Clear(); }
|
||||||
|
private:
|
||||||
|
static RendererAPI* s_api;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
18
Navigator/src/Navigator/Renderer/Renderer.h
Normal file
18
Navigator/src/Navigator/Renderer/Renderer.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef RENDERER_H
|
||||||
|
#define RENDERER_H
|
||||||
|
|
||||||
|
#include "RendererAPI.h"
|
||||||
|
#include "RenderCommand.h"
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
|
||||||
|
class Renderer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
static inline RendererAPI::API GetAPI() { return RendererAPI::GetAPI(); }
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
5
Navigator/src/Navigator/Renderer/RendererAPI.cpp
Normal file
5
Navigator/src/Navigator/Renderer/RendererAPI.cpp
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#include "RendererAPI.h"
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
RendererAPI::API RendererAPI::s_api = RendererAPI::API::OpenGL;
|
||||||
|
}
|
26
Navigator/src/Navigator/Renderer/RendererAPI.h
Normal file
26
Navigator/src/Navigator/Renderer/RendererAPI.h
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#ifndef RENDERER_API_H
|
||||||
|
#define RENDERER_API_H
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
|
||||||
|
class RendererAPI
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum class API
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
OpenGL = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual void Clear() = 0;
|
||||||
|
virtual void SetClearColor(const float* color_array) = 0;
|
||||||
|
|
||||||
|
inline static API GetAPI() { return s_api; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
static API s_api;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
17
Navigator/src/Platform/OpenGL/OpenGLRendererAPI.cpp
Normal file
17
Navigator/src/Platform/OpenGL/OpenGLRendererAPI.cpp
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#include "OpenGLRendererAPI.h"
|
||||||
|
|
||||||
|
#include "glad/glad.h"
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
|
||||||
|
void OpenGLRendererAPI::Clear()
|
||||||
|
{
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OpenGLRendererAPI::SetClearColor(const float* color_array)
|
||||||
|
{
|
||||||
|
glClearColor(color_array[0], color_array[1], color_array[2], color_array[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
17
Navigator/src/Platform/OpenGL/OpenGLRendererAPI.h
Normal file
17
Navigator/src/Platform/OpenGL/OpenGLRendererAPI.h
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef OPENGL_RENDERER_API_H
|
||||||
|
#define OPENGL_RENDERER_API_H
|
||||||
|
|
||||||
|
#include "Navigator/Renderer/RendererAPI.h"
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
|
||||||
|
class OpenGLRendererAPI : public RendererAPI
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual void Clear() override;
|
||||||
|
virtual void SetClearColor(const float* color_array) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
1
Navigator/vendor/implot
vendored
Submodule
1
Navigator/vendor/implot
vendored
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 4fcc6e01aca406ef17d5a2dabdcbc9e1bd962c0d
|
|
@ -7,6 +7,6 @@
|
||||||
],
|
],
|
||||||
"settings":
|
"settings":
|
||||||
{
|
{
|
||||||
"SublimeLinter.linters.g++.args": ["-c","-Wall","-fsyntax-only","-std=c++17","-include${folder}/Navigator/src/navpch.h","-INavigator/src/", "-INavigator/src/Navigator/","-INavigator/vendor/spdlog/include", "-INavigator/vendor/glfw/include/","-INavigator/vendor/glad/include","-INavigator/vendor/imgui"]
|
"SublimeLinter.linters.g++.args": ["-c","-Wall","-fsyntax-only","-std=c++17","-include${folder}/Navigator/src/navpch.h","-INavigator/src/", "-INavigator/src/Navigator/","-INavigator/vendor/spdlog/include", "-INavigator/vendor/glfw/include/","-INavigator/vendor/glad/include","-INavigator/vendor/imgui","-INavigator/vendor/implot"]
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -14,6 +14,7 @@ IncludeDirs ={}
|
||||||
IncludeDirs["glfw"] = "Navigator/vendor/glfw/include"
|
IncludeDirs["glfw"] = "Navigator/vendor/glfw/include"
|
||||||
IncludeDirs["ImGui"] = "Navigator/vendor/imgui"
|
IncludeDirs["ImGui"] = "Navigator/vendor/imgui"
|
||||||
IncludeDirs["glad"] = "Navigator/vendor/glad/include"
|
IncludeDirs["glad"] = "Navigator/vendor/glad/include"
|
||||||
|
IncludeDirs["ImPlot"] = "Navigator/vendor/implot"
|
||||||
|
|
||||||
include "Navigator/vendor/glfw"
|
include "Navigator/vendor/glfw"
|
||||||
include "Navigator/vendor/imgui"
|
include "Navigator/vendor/imgui"
|
||||||
|
@ -41,14 +42,17 @@ project "Navigator"
|
||||||
"%{prj.name}/vendor/spdlog/include/",
|
"%{prj.name}/vendor/spdlog/include/",
|
||||||
"%{IncludeDirs.glfw}",
|
"%{IncludeDirs.glfw}",
|
||||||
"%{IncludeDirs.ImGui}",
|
"%{IncludeDirs.ImGui}",
|
||||||
"%{IncludeDirs.glad}"
|
"%{IncludeDirs.glad}",
|
||||||
|
"%{IncludeDirs.ImPlot}"
|
||||||
}
|
}
|
||||||
|
|
||||||
filter {}
|
filter {}
|
||||||
|
|
||||||
files {
|
files {
|
||||||
"%{prj.name}/src/**.h",
|
"%{prj.name}/src/**.h",
|
||||||
"%{prj.name}/src/**.cpp"
|
"%{prj.name}/vendor/implot/*.h",
|
||||||
|
"%{prj.name}/src/**.cpp",
|
||||||
|
"%{prj.name}/vendor/implot/*.cpp"
|
||||||
}
|
}
|
||||||
|
|
||||||
defines {
|
defines {
|
||||||
|
@ -116,6 +120,7 @@ project "NavProject"
|
||||||
"Navigator/src",
|
"Navigator/src",
|
||||||
"Navigator/src/Navigator",
|
"Navigator/src/Navigator",
|
||||||
"Navigator/vendor/spdlog/include/",
|
"Navigator/vendor/spdlog/include/",
|
||||||
|
"Navigator/vendor/implot/",
|
||||||
"Navigator/vendor"
|
"Navigator/vendor"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user