Petit exemple qui reproduit le pb :
quand le curseur touche le carré au milieu pour la 1ere fois, j'ai un lag de 250 ms....
int main() {
//initial sprite we want to draw
sf::Texture sheet_to_draw;
sf::Sprite sprite_to_draw;
sprite_to_draw.setTexture(sheet_to_draw);
sprite_to_draw.setPosition(100,100);
//intermediate sf::RenderTexture
sf::RenderTexture intermediate;
sf::Sprite intermediate_sprite;
intermediate.create(100,100);
intermediate.clear(sf::Color(100,130,100));
intermediate_sprite.setTexture(intermediate.getTexture());
intermediate_sprite.setPosition(100,100);
//main rendering window
sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Graphics");
clock_t start = clock();
clock_t end = clock();
sf::FloatRect MainView(0, 0, 10, 10);
sf::RectangleShape rectangleCamera(sf::Vector2f(10,10));
rectangleCamera.setSize(sf::Vector2f(10,10));
rectangleCamera.setOutlineThickness(1);
rectangleCamera.setOutlineColor(sf::Color::Red);
rectangleCamera.setFillColor(sf::Color::Transparent);
while (App.isOpen())
{
// on inspecte tous les évènements de la fenêtre qui ont été émis depuis la précédente itération
sf::Event event;
while (window.pollEvent(event))
{
// évènement "fermeture demandée" : on ferme la fenêtre
if (event.type == sf::Event::Closed)
window.close();
}
App.clear(sf::Color(0,0,0));
rectangleCamera.setPosition(sf::Mouse::getPosition(App).x-5,sf::Mouse::getPosition(App).y-5);
MainView.left = sf::Mouse::getPosition(App).x-5;
MainView.top = sf::Mouse::getPosition(App).y-5;
//will lag when this condition is true:
if(MainView.intersects(sf::FloatRect(100,100,100,100))) {
intermediate.draw(sprite_to_draw);
intermediate.display();
}
App.draw(intermediate_sprite);
App.draw(rectangleCamera);
end = clock();
if( end-start > 5)
std::cout << (end-start)<<" ms \n";
start = end;
App.display();
}
return EXIT_SUCCESS;
};