From 0ee0a91d24ac376a343c3b49f5b3dc8582d1ddae Mon Sep 17 00:00:00 2001 From: Gagan Verma Date: Mon, 24 Nov 2025 17:05:12 +0530 Subject: [PATCH] some of sfml 2.6 code is migrated to sfml 3 --- include/common/circular_gauge.hpp | 2 +- include/common/dynamic_blur.hpp | 27 ++++++++++++++++----------- src/main.cpp | 7 ++++--- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/include/common/circular_gauge.hpp b/include/common/circular_gauge.hpp index 8db19ad5..71d53341 100644 --- a/include/common/circular_gauge.hpp +++ b/include/common/circular_gauge.hpp @@ -28,7 +28,7 @@ struct CircularGauge { const float ratio = (current_value - min_value) / (max_value - min_value); const float max_angle = 2.0f * PI * ratio; - sf::VertexArray va(sf::TriangleStrip, 2 * quality); + sf::VertexArray va(sf::PrimitiveType::TriangleStrip, 2 * quality); for (uint32_t i(0); i < quality; ++i) { const float angle = max_angle * (i / float(quality - 1)); const sf::Vector2f vec(-cos(angle), -sin(angle)); diff --git a/include/common/dynamic_blur.hpp b/include/common/dynamic_blur.hpp index 2f026fb7..eca63a28 100644 --- a/include/common/dynamic_blur.hpp +++ b/include/common/dynamic_blur.hpp @@ -70,8 +70,9 @@ class Blur current_buffer = blurPass(current_buffer, i); } m_textures[current_buffer].display(); - m_result.setTexture(m_textures[current_buffer].getTexture()); - return m_result; + sf::Sprite result(m_textures[current_buffer].getTexture()); + m_result = result; + return *m_result; } private: @@ -83,14 +84,18 @@ class Blur // Shaders sf::Shader m_horizontal; sf::Shader m_vertical; - sf::Sprite m_result; + std::optional m_result; // Methods void createTextures() { // Initialize textures - m_textures[0].create(m_render_size.x, m_render_size.y); - m_textures[1].create(m_render_size.x, m_render_size.y); + m_textures[0].~RenderTexture(); + m_textures[1].~RenderTexture(); + // Recreate them in-place using placement new + new (&m_textures[0]) sf::RenderTexture({m_render_size.x, m_render_size.y}); + new (&m_textures[1]) sf::RenderTexture({m_render_size.x, m_render_size.y}); + m_textures[0].setSmooth(true); m_textures[1].setSmooth(true); m_textures[0].setRepeated(true); @@ -139,21 +144,21 @@ class Blur const int32_t current_pass_size_x = m_render_size.x >> downscale; const int32_t current_pass_size_y = m_render_size.y >> downscale; // Draw from source to target with separate blur passes - sf::Sprite sprite; - sprite.setScale(scale, scale); - sprite.setTexture(getTexture(source_buffer)); + sf::Sprite sprite(getTexture(source_buffer)); + sprite.setScale({scale, scale}); + // sprite.setTexture(getTexture(source_buffer)); draw(sprite, !source_buffer); - sprite.setScale(1.0f, 1.0f); + sprite.setScale({1.0f, 1.0f}); sprite.setTexture(getTexture(!source_buffer)); - sprite.setTextureRect({0, 0, current_pass_size_x, current_pass_size_y}); + sprite.setTextureRect(sf::IntRect({0, 0}, {current_pass_size_x, current_pass_size_y})); draw(sprite, source_buffer, m_horizontal); sprite.setTexture(getTexture(source_buffer)); draw(sprite, !source_buffer, m_vertical); const float safe_scale = 1.0f; - sprite.setScale(inv_scale * safe_scale, inv_scale * safe_scale); + sprite.setScale({inv_scale * safe_scale, inv_scale * safe_scale}); sprite.setTexture(getTexture(!source_buffer)); draw(sprite, source_buffer); diff --git a/src/main.cpp b/src/main.cpp index 34542057..72a561ba 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,9 +19,10 @@ int main() RNGf::initialize(); sf::ContextSettings settings; - settings.antialiasingLevel = 4; - int32_t window_style = Conf::USE_FULLSCREEN ? sf::Style::Default : sf::Style::Default; - sf::RenderWindow window(sf::VideoMode(Conf::WIN_WIDTH, Conf::WIN_HEIGHT), "AntSim", window_style, settings); + settings.antiAliasingLevel = 4; + uint32_t window_style = Conf::USE_FULLSCREEN ? sf::Style::Default : sf::Style::Default; + std::string title = "AntSim"; + sf::RenderWindow window(sf::VideoMode({Conf::WIN_WIDTH, Conf::WIN_HEIGHT}), title, window_style, sf::State::Windowed, settings); window.setFramerateLimit(60); // Initialize simulation Simulation simulation(window);