[nostalgia/core] Setup Imgui drawing

This commit is contained in:
Gary Talent 2021-07-17 12:38:40 -05:00
parent 5a52d322b2
commit 724cf7f779
2 changed files with 14 additions and 2 deletions

View File

@ -8,6 +8,7 @@
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
#include <imgui.h> #include <imgui.h>
#include <imgui_impl_glfw.h>
#include <nostalgia/core/userland/gfx.hpp> #include <nostalgia/core/userland/gfx.hpp>
@ -18,7 +19,7 @@ namespace nostalgia::core {
constexpr auto Scale = 5; constexpr auto Scale = 5;
static void handleGlfwError(int err, const char *desc) { static void handleGlfwError(int err, const char *desc) {
oxErrf("GLFW error ({}): {}", err, desc); oxErrf("GLFW error ({}): {}\n", err, desc);
} }
ox::Error initGfx(Context *ctx) noexcept { ox::Error initGfx(Context *ctx) noexcept {
@ -39,7 +40,10 @@ ox::Error initGfx(Context *ctx) noexcept {
glfwMakeContextCurrent(id->window); glfwMakeContextCurrent(id->window);
IMGUI_CHECKVERSION(); IMGUI_CHECKVERSION();
ImGui::CreateContext(); ImGui::CreateContext();
ImGui::GetIO().ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; auto &io = ImGui::GetIO();
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
io.MouseDrawCursor = true;
ImGui_ImplGlfw_InitForOpenGL(id->window, true);
oxReturnError(renderer::init(ctx)); oxReturnError(renderer::init(ctx));
return OxError(0); return OxError(0);
} }

View File

@ -12,6 +12,7 @@
#define IMGUI_IMPL_OPENGL_ES3 #define IMGUI_IMPL_OPENGL_ES3
#include <imgui_impl_opengl3.h> #include <imgui_impl_opengl3.h>
#include <imgui_impl_glfw.h>
#include <ox/std/bit.hpp> #include <ox/std/bit.hpp>
#include <ox/std/fmt.hpp> #include <ox/std/fmt.hpp>
@ -269,11 +270,18 @@ void setBgStatus(Context *ctx, unsigned bg, bool status) noexcept {
void draw(Context *ctx) noexcept { void draw(Context *ctx) noexcept {
const auto id = ctx->rendererData<renderer::GlImplData>(); const auto id = ctx->rendererData<renderer::GlImplData>();
renderer::tickFps(id); renderer::tickFps(id);
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
// clear screen // clear screen
glClearColor(0, 0, 0, 1); glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT);
// render // render
//bool showDemo = true;
//ImGui::ShowDemoWindow(&showDemo);
renderer::drawBackgrounds(id); renderer::drawBackgrounds(id);
ImGui::Render();
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
} }
void clearTileLayer(Context *ctx, int layer) noexcept { void clearTileLayer(Context *ctx, int layer) noexcept {