Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Pixels fantomes  (Lu 6938 fois)

0 Membres et 3 Invités sur ce sujet

kryx

  • Jr. Member
  • **
  • Messages: 67
    • Voir le profil
Pixels fantomes
« le: Mai 20, 2014, 11:33:44 pm »
Bonsoir,

je viens poser la question ici, parce que je ne trouve pas du tout le solution.

Je dessine un cercle sur une rendertexture, je display celle-ci, je passe par un sprite pour l'appliquer sur une autre renderTexture (pour y appliquer un shader, mais que je n'applique pas pour ce problème) et enfin sur l'écran principal.

Et malheureusement, il reste des pixels là ou le cercle est passé mais n'est plus... Or, vu que j'ai clear les 2 renderTexture et la renderWindow, passé par un display pour chacune, comment cela est-il possible?

illustration:

On voit le point qui avance et les pixels fantomes derriere

Merci d'avance pour votre aide,

Kryx
« Modifié: Mai 20, 2014, 11:47:04 pm par kryx »

kryx

  • Jr. Member
  • **
  • Messages: 67
    • Voir le profil
Re : Pixels fantomes
« Réponse #1 le: Mai 20, 2014, 11:42:04 pm »
Etrange, si j'applique le shader, ces pixels disparaissent normalement.

J'imagine que c'est parce qu'il réactualise les parties fautives?
« Modifié: Mai 20, 2014, 11:49:06 pm par kryx »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Pixels fantomes
« Réponse #2 le: Mai 20, 2014, 11:51:07 pm »
A mon avis ça va être dur de se prononcer sans le code.
Marrant ton lien quand on clique sur l'image mène vers autre chose !

kryx

  • Jr. Member
  • **
  • Messages: 67
    • Voir le profil
Re : Pixels fantomes
« Réponse #3 le: Mai 20, 2014, 11:55:03 pm »
Le code en question est dispatché en tellement de classes que je ne refais qu'un rapide résumé:

RenderTexture t1, t2;
RenderWindow wdw;
CircleShape circle;

// initialisation des éléments.

while(true) {
     t1.clear();
     t2.clear();
     t1.draw(circle);
     t1.display();
     t2.draw(t1);
     t2.display();
     wdw.draw(t2);
}
 

(et ce en passant par des sprites évidement)

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Pixels fantomes
« Réponse #4 le: Mai 21, 2014, 12:26:20 am »
Tu clear et display pas ta window ?
Enfin bref t'façons avec du faux code on va pas aller loin. :p Soit y'a un vrai problème, soit tu fais mal quelque chose, donc essaie avec un vrai code où y'a juste tes 2 RenderTex ton cercle et ta fenêtre.

kryx

  • Jr. Member
  • **
  • Messages: 67
    • Voir le profil
Re : Pixels fantomes
« Réponse #5 le: Mai 21, 2014, 01:05:14 am »
Un code qui fait exactement la meme chose (meme problème):

package main;

public class Main
{
        public static Font FONT = new Font();
       
        public static RenderWindow window = new RenderWindow();
        public static RenderTexture rdrTxt = new RenderTexture();
        public static RenderTexture rdrTemp = new RenderTexture();
        public static Text text;
        public static CircleShape cir;
       
        public static Shader FXAA;
       
        public static void main(String[] args)
        {
                try {
                        FONT.loadFromFile(Paths.get("fonts/arial.ttf"));
                        window.setKeyRepeatEnabled(false);
                        ContextSettings settings = new ContextSettings(8);
                        window.create(new VideoMode(680,560), "Crazy-Colors", WindowStyle.RESIZE, settings);
                        window.setVerticalSyncEnabled(true);
                       
                        if (!Shader.isAvailable()) {
                                System.out.println("shader no available");
                        }
                       
                        FXAA = new Shader();
                        Path ShaderPath = FileSystems.getDefault().getPath("FXAA3.txt");
                        FXAA.loadFromFile(ShaderPath, Shader.Type.FRAGMENT);
                        FXAA.setParameter("sampler0", Shader.CURRENT_TEXTURE);
                        FXAA.setParameter("resolution", 300,300);

                        text = new Text("Ceci est un test", FONT);
                        text.setColor(Color.RED);
                        cir = new CircleShape();
                        cir.setRadius(5);
                        cir.setFillColor(Color.BLUE);
                        cir.setPointCount(128);
                        cir.setPosition(0, 0);
                        rdrTxt.create(680, 560);
                        rdrTemp.create(300, 300);
                        rdrTemp.draw(cir);
                        rdrTemp.display();
                        Sprite resTemp = new Sprite(rdrTemp.getTexture());
                        resTemp.setPosition(50,50);
                        rdrTxt.draw(text, new RenderStates(FXAA));
                        rdrTxt.display();
                        Sprite result = new Sprite(rdrTxt.getTexture());
                        int i = 0;
                        while (window.isOpen()) {
                                rdrTxt.clear();
                                rdrTemp.clear();
                                rdrTemp.draw(cir);
                                rdrTemp.display();
                                rdrTxt.draw(resTemp/*, new RenderStates(FXAA)*/);
                                //rdrTxt.draw(text/*, new RenderStates(FXAA)*/);
                            rdrTxt.display();
                            i += 10;
                            cir.setPosition(i, 0);
                            window.clear();
                            window.draw(result/*, new RenderStates(FXAA)*/);
                            //window.draw(cir);
                            window.display();
                           
                        }
                       
                } catch (Exception e) {
                        StringWriter errors = new StringWriter();
                        e.printStackTrace(new PrintWriter(errors));
                        System.out.println(errors.toString());
                        window.close();
                }
        }
}
 

Si je décommente le FXAA, je n'ai plus le problème....

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Pixels fantomes
« Réponse #6 le: Mai 21, 2014, 07:46:37 am »
Tu devrais essayer avec la dernière révision, il y a des bugs de ce genre qui ont été corrigés.
Laurent Gomila - SFML developer

kryx

  • Jr. Member
  • **
  • Messages: 67
    • Voir le profil
Re : Pixels fantomes
« Réponse #7 le: Mai 21, 2014, 09:58:33 am »
Malheureusement, il s'agit de la dernière révision (de la jsfml j'entends)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Pixels fantomes
« Réponse #8 le: Mai 21, 2014, 10:48:11 am »
Moi j'entends la dernière révision de SFML ;)
Laurent Gomila - SFML developer

kryx

  • Jr. Member
  • **
  • Messages: 67
    • Voir le profil
Re : Pixels fantomes
« Réponse #9 le: Mai 21, 2014, 11:01:57 am »
Je viens d'appliquer les derniers changements de la sfml au jar de la jsfml, le problème persiste, malheureusement...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Pixels fantomes
« Réponse #10 le: Mai 21, 2014, 11:56:05 am »
Tu as compilé SFML ?
Laurent Gomila - SFML developer

kryx

  • Jr. Member
  • **
  • Messages: 67
    • Voir le profil
Re : Pixels fantomes
« Réponse #11 le: Mai 21, 2014, 11:58:25 am »
j'ai compilé sfml depuis la dernière version github, puis compilé en jsfml, oui

kryx

  • Jr. Member
  • **
  • Messages: 67
    • Voir le profil
Re : Pixels fantomes
« Réponse #12 le: Mai 21, 2014, 02:21:08 pm »
pas de solutions, du coup?

j'ai pensé actualiser toute la texture a chaque fois avec un setfillcolor ou un truc du style, mais je sais pas si c'est une bonne idée...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Pixels fantomes
« Réponse #13 le: Mai 21, 2014, 04:15:59 pm »
Non je ne sais pas. Tu aurais moyen d'essayer la même chose en C++ ?
Laurent Gomila - SFML developer

kryx

  • Jr. Member
  • **
  • Messages: 67
    • Voir le profil
Re : Pixels fantomes
« Réponse #14 le: Mai 21, 2014, 04:49:41 pm »
hum, je n'ai pas vraiment d'environement prêt en c++, mais vu que j'ai besoin de régler ça, je vois ca rapidement