// Application code int main(int argc, char** argv) { InitGL(); InitImGui(); while (!glfwWindowShouldClose(window)) { ImGuiIO& io = ImGui::GetIO(); io.MouseWheel = 0; glfwPollEvents(); UpdateImGui(); // Create a simple window // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug" static bool show_test_window = true; static bool show_another_window = false; static float f; ImGui::Text("Hello, world!"); ImGui::SliderFloat("float", &f, 0.0f, 1.0f); show_test_window ^= ImGui::Button("Test Window"); show_another_window ^= ImGui::Button("Another Window"); // Calculate and show framerate static float ms_per_frame[120] = { 0 }; static int ms_per_frame_idx = 0; static float ms_per_frame_accum = 0.0f; ms_per_frame_accum -= ms_per_frame[ms_per_frame_idx]; ms_per_frame[ms_per_frame_idx] = ImGui::GetIO().DeltaTime * 1000.0f; ms_per_frame_accum += ms_per_frame[ms_per_frame_idx]; ms_per_frame_idx = (ms_per_frame_idx + 1) % 120; const float ms_per_frame_avg = ms_per_frame_accum / 120; ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", ms_per_frame_avg, 1000.0f / ms_per_frame_avg); // Show the ImGui test window // Most of user example code is in ImGui::ShowTestWindow() if (show_test_window) { ImGui::SetNewWindowDefaultPos(ImVec2(650, 20)); // Normally user code doesn't need/want to call it because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::ShowTestWindow(&show_test_window); } // Show another simple window if (show_another_window) { ImGui::Begin("Another Window", &show_another_window, ImVec2(200,100)); ImGui::Text("Hello"); ImGui::End(); } // Rendering glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y); glClearColor(0.8f, 0.6f, 0.6f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); ImGui::Render(); glfwSwapBuffers(window); } ImGui::Shutdown(); glfwTerminate(); return 0; }
// Application code int main(int argc, char** argv) { InitGL(); InitImGui(); while (!glfwWindowShouldClose(window)) { ImGuiIO& io = ImGui::GetIO(); mousePressed[0] = mousePressed[1] = false; glfwPollEvents(); UpdateImGui(); static bool show_test_window = true; static bool show_another_window = false; // 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; ImGui::Text("Hello, world!"); ImGui::SliderFloat("float", &f, 0.0f, 1.0f); show_test_window ^= ImGui::Button("Test Window"); show_another_window ^= ImGui::Button("Another Window"); // Calculate and show frame rate static float ms_per_frame[120] = { 0 }; static int ms_per_frame_idx = 0; static float ms_per_frame_accum = 0.0f; ms_per_frame_accum -= ms_per_frame[ms_per_frame_idx]; ms_per_frame[ms_per_frame_idx] = ImGui::GetIO().DeltaTime * 1000.0f; ms_per_frame_accum += ms_per_frame[ms_per_frame_idx]; ms_per_frame_idx = (ms_per_frame_idx + 1) % 120; const float ms_per_frame_avg = ms_per_frame_accum / 120; ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", ms_per_frame_avg, 1000.0f / ms_per_frame_avg); } // 2. Show another simple window, this time using an explicit Begin/End pair if (show_another_window) { ImGui::Begin("Another Window", &show_another_window, ImVec2(200,100)); ImGui::Text("Hello"); ImGui::End(); } // 3. Show the ImGui test window. Most of the sample code is in ImGui::ShowTestWindow() if (show_test_window) { ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiSetCondition_FirstUseEver); ImGui::ShowTestWindow(&show_test_window); } // Rendering glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y); glClearColor(0.8f, 0.6f, 0.6f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); ImGui::Render(); glfwSwapBuffers(window); } // Cleanup ImGui::Shutdown(); glfwTerminate(); return 0; }
void DemoUpdateStart() { if (!g_FontTexture) ImImpl_CreateDeviceObjects(); SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: // If a key is pressed, report it to the widgets // gUIState.keyentered = event.key.keysym.sym; // gUIState.keymod = event.key.keysym.mod; // if key is ASCII, accept it as character input // if ((event.key.keysym.unicode & 0xFF80) == 0) // gUIState.keychar = event.key.keysym.unicode & 0x7f; if (event.key.keysym.sym < 256) gPressed[event.key.keysym.sym] = 1; break; case SDL_KEYUP: if (event.key.keysym.sym < 256) gPressed[event.key.keysym.sym] = 0; // handle_key(event.key.keysym.sym, 0); break; case SDL_TEXTINPUT: strncpy(gUIState.textinput, event.text.text, sizeof(gUIState.textinput)); gUIState.textinput[sizeof(gUIState.textinput)-1] = 0; break; case SDL_MOUSEMOTION: // update mouse position gUIState.mousex = event.motion.x; gUIState.mousey = event.motion.y; break; case SDL_MOUSEBUTTONDOWN: // update button down state if left-clicking if (event.button.button == 1) { gUIState.mousedown = 1; } if (event.button.button == 4) { gUIState.scroll = +1; } if (event.button.button == 5) { gUIState.scroll = -1; } break; case SDL_MOUSEBUTTONUP: // update button down state if left-clicking if (event.button.button == 1) { gUIState.mousedown = 0; } break; case SDL_MOUSEWHEEL: if (event.wheel.y > 0) { gUIState.scroll += 1; } else if (event.wheel.y < 0) { gUIState.scroll -= 1; } break; case SDL_QUIT: SDL_Quit(); exit(0); break; } } glClearColor(0.2f, 0.2f, 0.4f, 0); glClear(GL_COLOR_BUFFER_BIT); DemoTexQuad(desktop_tex, 0, 0, 800, 400); UpdateImGui(); gMouseX = gUIState.mousex; gMouseY = gUIState.mousey; // Start the frame ImGui::NewFrame(); //ImGui::ShowTestWindow(); }