Bonjour,
J'avais déjà posté un problème concernant des problèmes de durée sur le setActive() de sf::RenderTexture (en croyant que ça venait du clear() ), j'étais donc parti sur une autre méthode pour effectuer mon éclairage, qui était de draw toutes les lumières en additif, puis de sauvegarder l'image et de la draw en multiply pour l'effet de luminosité.
Pour sauvegarder l'image, je la stocke dans un object Texture en appelant le
myTexture.update(window);
Le problème, c'est que j'observe des problèmes de latence également. Voici le code minimal :
int main()
{
sf::Texture * _texture = new sf::Texture();
_texture->create(1280, 720);
sf::Window window(sf::VideoMode(1280, 720), "My window");
// on fait tourner le programme jusqu'à ce que la fenêtre soit fermée
while (window.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();
}
sf::Clock myClock;
_texture->update(window);
qint64 time = myClock.restart().asMilliseconds();
if ( time > 1 )
qDebug() << "Update took too much time (" << time << "ms)";
}
return EXIT_SUCCESS;
}
et voici ce que j'obtiens en sortie :
Update took too much time ( 2 ms)
Update took too much time ( 2 ms)
Update took too much time ( 4 ms)
Update took too much time ( 4 ms)
Update took too much time ( 20 ms)
Update took too much time ( 4 ms)
Update took too much time ( 4 ms)
Sachant que ces messages arrivent relativement lentement (c'est-à-dire que la plupart des update() prennent moins de 1 ms.)
J'utilise Win 8, la version release de SFML 2.0 que j'ai recompilée et que j'utilise en static et je compile à l'aide de QtCreator.
Dites-moi si j'oublie quelque chose