1
Graphique / Problème de tearing
« le: Août 21, 2014, 10:13:41 am »
Bien l'bonjour.
Je m'amuse actuellement à créer une surcouche moteur à la SFML pour ajouter des fonctionnalités dont j'ai besoin. Dans cet objectif, je me suis mis à coder un petit lecteur vidéo utilisant FFMPEG.
Ça se passe plutôt bien à part que je me retrouve avec un tearing tout laid (Cf. http://scadapop.free.fr/tearing.jpg).
J'ai essayé d'activer la VSync mais à part me pomper 50% de CPU en plus, ça n'a rien changé au souci. Forcer le framerate à 60 n'a pas davantage arrangé les choses.
Grosso modo ce que je fais, c'est que tout ce qui est capture d'event, clear et display de la fenêtre, et draw du sprite de la vidéo est fait dans le thread principal.
À côté de ça, dans un autre thread, j'ai une fonction qui s'occupe d'update régulièrement la texture du sprite pour y placer les frames de la vidéo.
Par mesure de sécurité, j'ai mis un mutex autour de l'update de la texture et du draw du sprite.
J'ai pas trop l'impression que ce soit un souci de performance, ça tourne en général autour des 20/30% de CPU et 230/240K de mémoire quand je met un framerate de 60.
Bref voila je ne comprends pas vraiment ce qui ne va pas. Entre les threads et la mise à jour très régulière de la texture, j'ai peut-être raté un détail important à propos du fonctionnement de la SFML qui justifierait ce souci ?
Si quelqu'un a des idées, des pistes, n'importe quoi, je suis preneur
Je m'amuse actuellement à créer une surcouche moteur à la SFML pour ajouter des fonctionnalités dont j'ai besoin. Dans cet objectif, je me suis mis à coder un petit lecteur vidéo utilisant FFMPEG.
Ça se passe plutôt bien à part que je me retrouve avec un tearing tout laid (Cf. http://scadapop.free.fr/tearing.jpg).
J'ai essayé d'activer la VSync mais à part me pomper 50% de CPU en plus, ça n'a rien changé au souci. Forcer le framerate à 60 n'a pas davantage arrangé les choses.
Grosso modo ce que je fais, c'est que tout ce qui est capture d'event, clear et display de la fenêtre, et draw du sprite de la vidéo est fait dans le thread principal.
À côté de ça, dans un autre thread, j'ai une fonction qui s'occupe d'update régulièrement la texture du sprite pour y placer les frames de la vidéo.
Par mesure de sécurité, j'ai mis un mutex autour de l'update de la texture et du draw du sprite.
J'ai pas trop l'impression que ce soit un souci de performance, ça tourne en général autour des 20/30% de CPU et 230/240K de mémoire quand je met un framerate de 60.
Bref voila je ne comprends pas vraiment ce qui ne va pas. Entre les threads et la mise à jour très régulière de la texture, j'ai peut-être raté un détail important à propos du fonctionnement de la SFML qui justifierait ce souci ?
Si quelqu'un a des idées, des pistes, n'importe quoi, je suis preneur