J'ai commencé à déconner avec C++ et SFML 2.4 et je l'apprécie jusqu'à présent, mais j'ai rencontré un problème de performance frustrant en essayant même de déplacer un simple rectangle blanc autour de l'écran. Déplacer le sprite est très nerveux et "injouable" même en utilisant l'heure delta. Il semble provenir d'un sondage pour les événements de fenêtre. Une fois enlevé, tout est lisse comme du beurre mais les événements ne peuvent pas être lus (bien sûr). Y a-t-il un problème avec ce que je fais ou quoi que ce soit que je puisse faire pour résoudre ce problème?Problèmes SFML fps avec l'interrogation d'événement de fenêtre
exemple minimal:
#include <SFML/Graphics.hpp>
int main(){
sf::RenderWindow window(sf::VideoMode(500, 500), "Testing");
sf::Image pixelBuffer;
pixelBuffer.create(100, 100, sf::Color::White);
sf::Texture pixelTexture;
pixelTexture.loadFromImage(pixelBuffer);
sf::Sprite pixelSprite;
pixelSprite.setTexture(pixelTexture);
sf::Clock clock;
while(window.isOpen()){
//Poll for events
sf::Event event;
while(window.pollEvent(event)){
if(event.type == sf::Event::Closed){
window.close();
}
}
//Update the sprite
float delta = clock.restart().asSeconds();
pixelSprite.move(sf::Vector2f(50, 50) * delta);
//Draw the sprite
window.clear(sf::Color::Black);
window.draw(pixelSprite);
window.display();
}
}
Merci!
vous dites que pollEvents provoque fps drops mais vous n'incluez même pas la fonction dans la question. Faire un exemple minimal de travail complet. Et vous ne voulez probablement pas redémarrer l'horloge à chaque itération. – Sopel
En fait, j'ai fait si vous regardez l'extrait de code dans la méthode run() et placé un commentaire sur la méthode où il est appelé. Je viens de supprimer les autres méthodes pour que vous puissiez le lire plus facilement. –
ne ressemble pas à une source du problème, poster un exemple complet minimal que je peux copier et compiler – Sopel