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(); +}