Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: retro-bruno le Novembre 04, 2014, 08:21:08 pm

Titre: Problème de tearing avec sfRenderTexture_getTexture [Résolu]
Posté par: retro-bruno le Novembre 04, 2014, 08:21:08 pm
Bonsoir à tous,

Je rencontre un problème de tearing avec sfRenderTexture_getTexture. Existe t'il un moyen de contourner ce bug ?

Voici mon code :

void scrolldown() {
    sfVector2f pos;
    pos.x = 0;
    pos.y = 16;
    scrolltex = sfRenderTexture_getTexture(ecran);
    sfSprite * tempspr = sfSprite_create();
    sfSprite_setTexture(tempspr,scrolltex,sfTrue);
    sfSprite_setPosition(tempspr,pos);
    sfRenderTexture_drawSprite(ecran,tempspr,NULL);
    sfSprite_destroy(tempspr);
    sfVector2f vect1;
    sfVector2f vect2;
    vect1.x = 0;
    vect1.y = 0;
    vect2.x = 639;
    vect2.y = 15;
    sfRectangleShape * rectangle = sfRectangleShape_create();
    sfRectangleShape_setPosition(rectangle,vect1);
    sfRectangleShape_setSize(rectangle,vect2);
    sfRectangleShape_setFillColor(rectangle,PAPER);
    sfRenderTexture_drawRectangleShape(ecran,rectangle,NULL);
}
 

Et voici deux screenshots, un avant application de mon scrolling et un après :
(http://www.retro-bruno.com/mesimages/rb1.jpg)


(http://www.retro-bruno.com/mesimages/rb2.jpg)

Ps : Je ne crois pas pouvoir faire un usage des views pour faire mon scrolling, à moins que quelqu'un ait une idée ? Mon programme est un intepréteur BASIC qui fonctionne un peu comme l'Amstrad CPC pour les scrolling avec les flêches du clavier.
S'il existe la possibilité de copier une view dans une rendertexture, texture, un sprite, une image, je suis preneur...
Titre: Re : Problème de tearing avec sfRenderTexture_getTexture
Posté par: Laurent le Novembre 04, 2014, 10:37:58 pm
Tu dessines une texture sur elle-même, c'est un comportement indéfini.

Pourquoi est-ce que tu ne peux pas utiliser une vue ?
Titre: Re : Problème de tearing avec sfRenderTexture_getTexture
Posté par: retro-bruno le Novembre 04, 2014, 10:45:19 pm
il faut que je puisse faire un scrolling de taille très importante :
Si je tape la commande "LIST", et que j'ai un programme rempli au maximum, cela fait 65535 * 8 pixels de haut = 524280 pixels de haut !!

Par contre, s'il y a moyen de faire quelque chose avec une view pour pallier à ce problème, je veux bien l'entendre.

EDIT: Merci beaucoup, c'était ça ! Il suffisait donc de dupliquer la texture et d'assigner sa copie au sprite pour réécrire.  :)