Hello, I am trying to make better perfomance of my level editor a little better so while I am idle (not doing anything on window (pressing keys, spawning objects)) I want to draw the sprites to window and then wait for another click.
After I click again I want to spawn object on window, draw_everything_again(), win.display() but this causes blinking sprites. It actually draws them on correct places but they are blinking.
auto draw_map = [&win_editor] (const std::vector<std::vector<char>>& map, sf::Sprite wall_spr) {
for (int i = 0; i < map.size(); i++) {
//Go
for (int j = 0; j < map[0].size(); j++) {
if (map[i][j] == '*') {
wall_spr.setPosition(sf::Vector2f(i*gm_win.N, j*gm_win.N));
win_editor.draw(wall_spr);
}
}
}
};
bool btn_pressed = false;
while (win_editor.isOpen()) {
while (win_editor.pollEvent(some_events)) {
//WINDOW IS OPENED
switch (some_events.type) {
case sf::Event::Closed:
//Maybe ask for save safe;
win_editor.close();
break;
case sf::Event::MouseButtonPressed:
//Just perfomance stuff, we don't need to refresh window everytime, just when we do actions
btn_pressed = true;
break;
}
} //End of while
if (btn_pressed) {
win_editor.clear(sf::Color::Black);
draw_map(editors_map, temp_spr);
btn_pressed = false;
}
win_editor.display();
}