From 8a78fffb5f4cc6d02b44b9151d95e7ed56704f84 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Tue, 23 Apr 2024 07:50:26 -0400 Subject: [PATCH] A simple meson based build of an SFML+ImGUI project. --- sfmldemo/meson.build | 9 +++++++++ sfmldemo/setup.ps1 | 13 +++++++++++++ sfmldemo/sfmlprog.cpp | 44 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 sfmldemo/meson.build create mode 100644 sfmldemo/setup.ps1 create mode 100644 sfmldemo/sfmlprog.cpp diff --git a/sfmldemo/meson.build b/sfmldemo/meson.build new file mode 100644 index 0000000..f478b02 --- /dev/null +++ b/sfmldemo/meson.build @@ -0,0 +1,9 @@ +project('sfmldemo', 'cpp', + default_options: 'default_library=static') + +sfml_dep = dependency('sfml') +imgui_dep = dependency('imgui-sfml') + +executable('sfmlprog', 'sfmlprog.cpp', + win_subsystem: 'windows', + dependencies: [sfml_dep, imgui_dep]) diff --git a/sfmldemo/setup.ps1 b/sfmldemo/setup.ps1 new file mode 100644 index 0000000..eef6327 --- /dev/null +++ b/sfmldemo/setup.ps1 @@ -0,0 +1,13 @@ +mkdir builddir +mkdir subprojects +meson wrap install flac +meson wrap install freetype2 +meson wrap install imgui-sfml +meson wrap install imgui +meson wrap install libpng +meson wrap install ogg +meson wrap install openal-soft +meson wrap install sfml +meson wrap install vorbis +meson wrap install zlib +meson setup builddir diff --git a/sfmldemo/sfmlprog.cpp b/sfmldemo/sfmlprog.cpp new file mode 100644 index 0000000..28b4ff5 --- /dev/null +++ b/sfmldemo/sfmlprog.cpp @@ -0,0 +1,44 @@ +#include "imgui.h" +#include "imgui-SFML.h" + +#include +#include +#include +#include + +int main() { + sf::RenderWindow window(sf::VideoMode(1920, 1080), "ImGui + SFML = <3"); + // window.setFramerateLimit(60); + window.setVerticalSyncEnabled(true); + ImGui::SFML::Init(window); + + sf::CircleShape shape(100.f); + shape.setFillColor(sf::Color::Green); + + sf::Clock deltaClock; + while (window.isOpen()) { + sf::Event event; + while (window.pollEvent(event)) { + ImGui::SFML::ProcessEvent(window, event); + + if (event.type == sf::Event::Closed) { + window.close(); + } + } + + ImGui::SFML::Update(window, deltaClock.restart()); + + ImGui::ShowDemoWindow(); + + ImGui::Begin("Hello, world!"); + ImGui::Button("Look at this pretty button"); + ImGui::End(); + + window.clear(); + window.draw(shape); + ImGui::SFML::Render(window); + window.display(); + } + + ImGui::SFML::Shutdown(); +}