From 7bde340823e7ceaa6e5de91d638e1b21f29ca505 Mon Sep 17 00:00:00 2001 From: Chris Thrasher Date: Wed, 10 May 2023 12:41:32 -0600 Subject: [PATCH] Demonstrate how to acquire and use ImGui-SFML --- CMakeLists.txt | 15 ++++++++++++++- src/main.cpp | 19 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9610602..83ccbfd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,13 +2,26 @@ cmake_minimum_required(VERSION 3.21) project(CMakeSFMLProject LANGUAGES CXX) include(FetchContent) + FetchContent_Declare(SFML GIT_REPOSITORY https://github.com/SFML/SFML.git GIT_TAG 2.6.x) FetchContent_MakeAvailable(SFML) +FetchContent_Declare(ImGui + GIT_REPOSITORY https://github.com/ocornut/imgui + GIT_TAG v1.89.5) +FetchContent_MakeAvailable(ImGui) +FetchContent_GetProperties(ImGui SOURCE_DIR IMGUI_DIR) + +set(IMGUI_SFML_FIND_SFML OFF) +FetchContent_Declare(ImGui-SFML + GIT_REPOSITORY https://github.com/SFML/imgui-sfml + GIT_TAG 2.6.x) +FetchContent_MakeAvailable(ImGui-SFML) + add_executable(CMakeSFMLProject src/main.cpp) -target_link_libraries(CMakeSFMLProject PRIVATE sfml-graphics) +target_link_libraries(CMakeSFMLProject PRIVATE sfml-graphics ImGui-SFML::ImGui-SFML) target_compile_features(CMakeSFMLProject PRIVATE cxx_std_17) if (WIN32 AND BUILD_SHARED_LIBS) add_custom_command(TARGET CMakeSFMLProject POST_BUILD diff --git a/src/main.cpp b/src/main.cpp index f1bb2ba..ddb1406 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,21 +1,36 @@ #include +#include +#include int main() { - auto window = sf::RenderWindow{ { 1920u, 1080u }, "CMake SFML Project" }; + auto window = sf::RenderWindow{ { 1280u, 720u }, "CMake SFML Project" }; window.setFramerateLimit(144); + ImGui::SFML::Init(window); + sf::Clock clock; while (window.isOpen()) { for (auto event = sf::Event{}; window.pollEvent(event);) { + ImGui::SFML::ProcessEvent(window, event); + if (event.type == sf::Event::Closed) { window.close(); } } + ImGui::SFML::Update(window, clock.restart()); + + ImGui::Begin("Hello, world!"); + ImGui::Button("Look at this pretty button"); + ImGui::End(); + window.clear(); + ImGui::SFML::Render(window); window.display(); } -} \ No newline at end of file + + ImGui::SFML::Shutdown(); +}