#include #include #include #include #include #include int main(int argc, char **argv) { std::cout << "Hello working!" << std::endl; static bool dragging_window = false; static ImVec2 move_offset; glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_DECORATED, GLFW_FALSE); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // make the window GLFWwindow *window = glfwCreateWindow(640, 480, "OpenGL Demo", NULL, NULL); if (!window) { std::cout << "Failed to create GLFW window." << std::endl; glfwTerminate(); return -1; } glfwMakeContextCurrent(window); // d // load graphics if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { std::cerr << "Failed to initialize OpenGL loader!" << std::endl; return -1; } glViewport(0, 0, 640, 480); // d // now make ImGui IMGUI_CHECKVERSION(); ImGui::CreateContext(); ImGuiIO &io = ImGui::GetIO(); (void)io; ImGui::StyleColorsDark(); ImGui_ImplGlfw_InitForOpenGL(window, true); ImGui_ImplOpenGL3_Init("#version 130"); /// im a dumbass /// // program while (!glfwWindowShouldClose(window)) { glClearColor(1.0f, .5f, .2f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glfwPollEvents(); ImGui_ImplOpenGL3_NewFrame(); ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); ImGui::BeginMainMenuBar(); ImVec2 mouse_pos = ImGui::GetMousePos(); ImVec2 window_pos = ImGui::GetWindowPos(); if (ImGui::IsMouseDown(0) && ImGui::IsItemHovered()) { if (!dragging_window) { dragging_window = true; move_offset = ImVec2(mouse_pos.x - window_pos.x, mouse_pos.y - window_pos.y); } int new_x = static_cast(mouse_pos.x - move_offset.x); int new_y = static_cast(mouse_pos.y - move_offset.y); glfwSetWindowPos(window, new_x, new_y); } else { dragging_window = false; } if (ImGui::BeginMenu("File")) { ImGui::MenuItem("Exit"); ImGui::EndMenu(); } ImGui::EndMainMenuBar(); ImGui::Begin("Editor"); ImGui::Text("Hello from editor"); ImGui::End(); ImGui::Render(); ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); glfwSwapBuffers(window); } glfwDestroyWindow(window); glfwTerminate(); return 0; }