// ImGui - standalone example application for Glfw + OpenGL 2, using fixed pipeline // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. #include #include "imgui_impl_glfw.h" #include #include #include static void error_callback(int error, const char* description) { fprintf(stderr, "Error %d: %s\n", error, description); } std::vector foos; int main(int, char**) { foos.push_back(0.3); // Setup window glfwSetErrorCallback(error_callback); if (!glfwInit()) return 1; GLFWwindow* window = glfwCreateWindow(1280, 720, "ImGui OpenGL2 example", NULL, NULL); glfwMakeContextCurrent(window); // Setup ImGui binding ImGui_ImplGlfw_Init(window, true); bool show_test_window = true; bool show_another_window = false; ImVec4 clear_color = ImColor(114, 144, 154); // Main loop while (!glfwWindowShouldClose(window)) { glfwPollEvents(); ImGui_ImplGlfw_NewFrame(); // 1. Show a simple window // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug" { static float f = 0.0f; ImGui::Text("Hello, world!"); ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // fails /* for(auto s : foos) { ImGui::SliderFloat("float x", &s, 0.0f, 1.0f); } */ // fails ///* for(float s : foos) { ImGui::SliderFloat("float x", &s, 0.0f, 1.0f); } //*/ // works /* for(auto &s : foos) { ImGui::SliderFloat("float x", &s, 0.0f, 1.0f); } */ // works /* for(float &s : foos) { ImGui::SliderFloat("float x", &s, 0.0f, 1.0f); } */ } // Rendering int display_w, display_h; glfwGetFramebufferSize(window, &display_w, &display_h); glViewport(0, 0, display_w, display_h); glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w); glClear(GL_COLOR_BUFFER_BIT); ImGui::Render(); glfwSwapBuffers(window); } // Cleanup ImGui_ImplGlfw_Shutdown(); glfwTerminate(); return 0; }