aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-04-03 18:36:23 -0700
committerrtk0c <[email protected]>2022-04-03 18:36:23 -0700
commit11edae3fbf770695d1b263712ca4f3a40bdd70e3 (patch)
treea1a01147b78f10f467b757ecee7056d09d594230 /source
Changeset: 1 Branch comment: [] Initial commit
Diffstat (limited to 'source')
-rw-r--r--source/App.cpp7
-rw-r--r--source/App.hpp6
-rw-r--r--source/CMakeLists.txt4
-rw-r--r--source/main.cpp97
4 files changed, 114 insertions, 0 deletions
diff --git a/source/App.cpp b/source/App.cpp
new file mode 100644
index 0000000..35fb5f7
--- /dev/null
+++ b/source/App.cpp
@@ -0,0 +1,7 @@
+#include "App.hpp"
+
+#include <imgui.h>
+
+void App::Show() {
+ // Application goes here
+}
diff --git a/source/App.hpp b/source/App.hpp
new file mode 100644
index 0000000..bc99354
--- /dev/null
+++ b/source/App.hpp
@@ -0,0 +1,6 @@
+#pragma once
+
+class App {
+public:
+ void Show();
+}; \ No newline at end of file
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
new file mode 100644
index 0000000..a76475b
--- /dev/null
+++ b/source/CMakeLists.txt
@@ -0,0 +1,4 @@
+target_sources(${PROJECT_NAME}
+PRIVATE
+ App.hpp App.cpp
+)
diff --git a/source/main.cpp b/source/main.cpp
new file mode 100644
index 0000000..b98d62b
--- /dev/null
+++ b/source/main.cpp
@@ -0,0 +1,97 @@
+#include "App.hpp"
+
+#define GLFW_INCLUDE_NONE
+#include <GLFW/glfw3.h>
+
+#include <backends/imgui_impl_glfw.h>
+#include <backends/imgui_impl_opengl3.h>
+#include <glad/glad.h>
+#include <imgui.h>
+#include <iostream>
+#include <string>
+
+#define IMGUI_IMPL_OPENGL_LOADER_CUSTOM 1
+#include <backends/imgui_impl_glfw.cpp>
+#include <backends/imgui_impl_opengl3.cpp>
+
+static void GlfwErrorCallback(int error, const char* description) {
+ fprintf(stderr, "Glfw Error %d: %s\n", error, description);
+}
+
+int main() {
+ if (!glfwInit()) {
+ return -1;
+ }
+
+ glfwSetErrorCallback(&GlfwErrorCallback);
+
+ // Decide GL+GLSL versions
+#if defined(IMGUI_IMPL_OPENGL_ES2)
+ // GL ES 2.0 + GLSL 100
+ const char* glsl_version = "#version 100";
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
+ glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
+#elif defined(__APPLE__)
+ // GL 3.2 + GLSL 150
+ const char* glsl_version = "#version 150";
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
+ glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only
+ glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac
+#else
+ // GL 3.0 + GLSL 130
+ const char* glsl_version = "#version 130";
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
+#endif
+
+ GLFWwindow* window = glfwCreateWindow(1280, 720, "ImGui Command Palette Example", nullptr, nullptr);
+ if (window == nullptr) {
+ return -2;
+ }
+ glfwMakeContextCurrent(window);
+ glfwSwapInterval(1);
+
+ if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
+ return -3;
+ }
+
+ IMGUI_CHECKVERSION();
+ ImGui::CreateContext();
+
+ ImGui_ImplGlfw_InitForOpenGL(window, true);
+ ImGui_ImplOpenGL3_Init(glsl_version);
+
+ App app;
+ while (!glfwWindowShouldClose(window)) {
+ glfwPollEvents();
+
+ ImGui_ImplOpenGL3_NewFrame();
+ ImGui_ImplGlfw_NewFrame();
+ ImGui::NewFrame();
+
+ app.Show();
+
+ ImGui::Render();
+ int display_w, display_h;
+ glfwGetFramebufferSize(window, &display_w, &display_h);
+ glViewport(0, 0, display_w, display_h);
+ auto clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
+ glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear_color.z * clear_color.w, clear_color.w);
+ glClear(GL_COLOR_BUFFER_BIT);
+ ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
+
+ glfwSwapBuffers(window);
+ }
+
+ ImGui_ImplOpenGL3_Shutdown();
+ ImGui_ImplGlfw_Shutdown();
+
+ ImGui::DestroyContext();
+
+ glfwDestroyWindow(window);
+ glfwTerminate();
+
+ return 0;
+}