IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Probleme FBO, MRT, Cg


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Par défaut Probleme FBO, MRT, Cg
    bonjour,

    Mon prog realise plusieurs passage offsreen , ainsi à chaque passe il stocke dans une texture les resultat de ses calculs.
    ensuite j'ai une passe qui elle va reutiliser c'est texture pour regrouper les resultat.
    mais ayant besoin de plusieurs buffer de sortie de mon shader je fais du MRT, en attachant plusieurs colorbuffer à mes texture de sortie.

    ainsi lorsque je n'ai qu'un buffer de sortie c'est à dire sans MRT, je n'ai aucun probleme, en revanche lorsque je lance plusieurs buffer de sortie la il bug, en modifiant mes textures mise en entré alors qu'il ne sont accessible que en lecture.

    alors la je comprends pas mon probleme.
    J'ai les extensions qui fonctionne, j'utilise bien gldrawBuffers pour ecrire dans tous mes COLOR_ATTACHMENT
    donc la moi plus comprendre.

    donc ma question c'est comment un buffer de sortie différent de mes buffer d'entré peu modifier mes buffers d'entré.

    main( ....
    out float4 color0: COLOR0,
    out float4 color1: COLOR1,
    sampler2D tex1,
    sampler2D tex2){


    float4 tmp1 = tex2D(tex1, ...):
    float4 tmp2 = tex2D(tex2, ...);

    color0 = tmp1;
    color1 = tmp2;

    }

    le prog si dessus modifie le contenu de tex2

    alors que si je lance le prog avec un seul attachement.
    la il m'affiche le bon color0

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    Peux tu envoyer les sources, parceque la, c est un peu vague

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Par défaut
    le Shader

    void mainTest(float4 PosProj : TEXCOORD0,
    float4 color : COLOR0,
    float4 CoordSource : TEXCOORD1,
    out float4 outcolor :COLOR0,
    out float4 outcolor1 :COLOR1,
    uniform sampler2D tex0,
    uniform sampler2D tex1)
    {

    float4 colortmp = 0.0;
    float4 posTmp = PosProj;
    posTmp /= posTmp.w;
    posTmp.xyz = posTmp.xyz*0.5 + 0.5;

    int tmp;
    float4 valuetex0 = tex2D(tex0, posTmp.xy);

    float4 valuetex1 = tex2D(tex1, posTmp.xy);


    outcolor = valuetex0 + 0.21;
    outcolor1 = valuetex1 + 0.55;

    }



    sinon pour le prog c'est compliqué à envoyer.
    mais le principe c'est que je passe plusieurs fois en boucle sur un autre shader qui transforme mes buffer tex0 et tex1 avec des données , apres une derniere passe realise le shader du message

    toute mes passe sauf la derniere on une framebuffer avec COLOR_ATTACHMENT0 et DEPTH_ATTACHMENT

    alors que la derniere passe elle à 2 COLOR_ATTACHMENT 0 et 1.

    les buffers utilisé sont tous differents, à chaque passe j'utilise d'autre buffer, ou plutot je swap entre plusieurs buffers.

    Mais mon probleme à changé car en faisant pour mes 2 passe différente, des FBO différents, j'evite le probleme de modification des buffers en lecture, mais actuellement voila se qui se passe.


    initPasse1 ( buffer1 attacher à COLOR_ATTACH0) // initialise les buffers
    swapBuffer();
    Passe2 ( buffer2 attacher à COLOR_ATTACH0 et Buffer1 Donné au shader)

    PasseFinal( buffer3 et buffer4 attacher à COLOR_ATTACH0 et COLOR_ATTACH1 et Buffer1 et 2 donné en entré).



    lorsque j'execute le prog, l'un des buffer 3 ou 4 (toujours le meme) affiche le bon resultat pendant quelque seconde et puis apres plus rien. alors qu'il devrai toujours effectué la meme chose.

    Sinon si j'execute le meme programme avec pour la "passeFinal" au lieu de buffer2 et 1 en entré mais plutot des buffer5 et 6(vide) qui lorsque je repasse dans "passeFinal" je swap les buffer 5 et 6 avec 3 et 4 ainsi 5 et 6 sont attaché à la frame et 3 et 4 donné au shader.
    se qui realise une boucle sur les meme buffer, se qui devrai faire augmenté la valeur de dans les buffer à la sa fonctionne pas non plus.

    Mais le plus bizarre c'est que si j'effectue la passFinal tous seul en bouclant sur elle meme, elle fais bien l'augmentation.

    donc mystere

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Par défaut
    Probleme Resolu

    Il suffisait de changer de carte graphique, et oui ma programation est bonne c'est juste la carte graphique qui à un bug.
    pour info la carte etait une Nvidia Quatro FX 1400

    officiellement elle supportait 4 COLOR_ATTACHMENT, FLOAT32 .... donc si il y en a d'autre qui sont desperé, si vous avez tous revu et que vous etes sur de votre code, pensé au materiel.

Discussions similaires

  1. Probleme openglES sous android (FBO/DrawTexture)
    Par guigz2000 dans le forum OpenGL
    Réponses: 0
    Dernier message: 16/02/2012, 14h27
  2. Problem de rendu offscren avec un FBO
    Par F-fisher dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/11/2008, 07h31
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo