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 :

Problème de Stencil-buffer


Sujet :

OpenGL

  1. #1
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut Problème de Stencil-buffer
    Salut, je poste parce que je deviens fou là, j'ai dû faire une erreur débile mais je la vois pas et ça fait des heures que je suis dessus...

    Je vous explique : comme je veux utiliser le stencil-buffer pour faire du shadowing volumique, et que je n'avais jamais encore utilisé ça, j'ai voulu commencer mollo.
    Alors je dessine un carré rouge dans la moitié de l'écran, pour mettre le stencil de ces pixels à 1, puis je dessine mon modèle seulement là où les pixels ne sont pas à 1 (soit l'autre moitié de l'écran normalement, puisque je cleare le stencil-buffer à chaque passe).

    Voilà le code correspondant (C++, openGL, utilise Qt et QGLViewer)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    // ...
    glEnable(GL_STENCIL_TEST);
       glStencilFunc(GL_ALWAYS,1,0xffffffff);
       glStencilOp(GL_REPLACE,GL_REPLACE,GL_REPLACE);
       //startScreenmachin c'est pour tracer en 2d sur l'écran
       //en donnant les coordonnées réelles, préimplémenté dans QGLViewer
       //et d'expérience ca marche bien
       startScreenCoordinatesSystem();
        glDisable(GL_LIGHTING);
        glDepthMask(false);
        int w=width()/2;
        int h=width()/2;
        glBegin(GL_QUADS);
          glColor3f(1.0f,0.0f,0.0f);
          glVertex2i(0,0);
          glVertex2i(w,0);
          glVertex2i(w,h);
          glVertex2i(0,h);
        glEnd();
        glEnable(GL_LIGHTING);
        glDepthMask(true);
       stopScreenCoordinatesSystem();
     
       glStencilFunc(GL_EQUAL,0,0xffffffff);
       glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
       glColor3f(1.0f,1.0f,1.0f);
       renderModel();
     
    glDisable(GL_STENCIL_TEST);
    le rectangle rouge est bien tracé à l'écran, mais ma scène l'est aussi et en entier et détail 'amusant', que je mette GL_EQUAL, GL_NEVER ou GL_ALWAYS dans mon dernier glStencilFunc, ca ne change rien !!! pourtant le stencil test est enabled, je comprends vraiment pas.

    voilà merci d'avance à celui ou celle qui aura une idée pour me sortir de là
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  2. #2
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    il ne faut pas oublier d'activer le stencil buffer a l'init...
    sous glut c'est un parametre de a passer en même temps que les parametres GLUT_COLOR_BUFFER | GLUT_STENCIL_BUFFER

    par contre je sait pas sour QT mais tu doit pouvoir trouver ca dans la doc...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  3. #3
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    C'était exactement ça, merci beaucoup !! je sais pas combien de temps j'aurais mis pour trouver sinon... maintenant ca marche nickel merci !
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Stencil Buffer
    Par katmai dans le forum OpenGL
    Réponses: 1
    Dernier message: 13/03/2010, 15h35
  2. stencil buffer
    Par graphicsxp dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/12/2004, 13h21
  3. mask in stencil buffer
    Par graphicsxp dans le forum OpenGL
    Réponses: 3
    Dernier message: 13/12/2004, 11h17
  4. Probleme Stencil Buffer
    Par supergrey dans le forum DirectX
    Réponses: 14
    Dernier message: 20/07/2004, 20h54
  5. stencil buffer
    Par patapetz dans le forum OpenGL
    Réponses: 6
    Dernier message: 26/02/2004, 17h23

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