diff options
author | rtk0c <[email protected]> | 2022-04-03 18:36:23 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2022-04-03 18:36:23 -0700 |
commit | 11edae3fbf770695d1b263712ca4f3a40bdd70e3 (patch) | |
tree | a1a01147b78f10f467b757ecee7056d09d594230 /source |
Changeset: 1 Branch comment: [] Initial commit
Diffstat (limited to 'source')
-rw-r--r-- | source/App.cpp | 7 | ||||
-rw-r--r-- | source/App.hpp | 6 | ||||
-rw-r--r-- | source/CMakeLists.txt | 4 | ||||
-rw-r--r-- | source/main.cpp | 97 |
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; +} |