Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion include/common/circular_gauge.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
27 changes: 16 additions & 11 deletions include/common/dynamic_blur.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -83,14 +84,18 @@ class Blur
// Shaders
sf::Shader m_horizontal;
sf::Shader m_vertical;
sf::Sprite m_result;
std::optional<sf::Sprite> 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);
Expand Down Expand Up @@ -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);

Expand Down
7 changes: 4 additions & 3 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down