You could pre-render your level with a sf::RenderTexture and sf::Sprite combo, Terminator. :) Like so:
class Level : public sf::Drawable {
public:
std::vector<Tile> m_tiles;
sf::RenderTexture m_renderer;
sf::Sprite m_preRendered;
// ---
sf::Vector2u getSize() const;
Level::Level() {
// insert tiles into m_tiles
m_renderer.create(getSize());
m_preRendered.setTexture(m_renderer.getTexture());
for (Tile& tile: m_tiles) {
m_renderer.draw(tile);
}
}
void draw (sf::RenderTarget& tar, sf::RenderStates states) const {
tar.draw(m_preRendered, states);
}
};
If you want your level to have, for example, moving platforms, or tiles that fall upon being stepped on, make them separate entities. If you want something almost Worms-like and want any of your tiles to be destructible, you could make it so that fixed portions of your level (with the altered Tile) are re-rendered, or something else.