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 :

Valeur de GL_SCISSOR_TEST qui change toute seule.


Sujet :

OpenGL

  1. #1
    Invité
    Invité(e)
    Par défaut Valeur de GL_SCISSOR_TEST qui change toute seule.
    Salut, j'ai imprimé la valeur de GL_SCISSOR_TEST, je ne l'active et la désactive uniquement dans cette classe :
    Code cpp : 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
     
    void Panel::onDraw(RenderTarget& target, RenderStates states) {
                    glCheck(glEnable(GL_SCISSOR_TEST));
                    glCheck(glScissor(getPosition().x, getWindow().getSize().y - (getPosition().y + getSize().y), getSize().x, getSize().y));
                    std::cout<<"enable scissor test"<<std::endl;
                    rect.setPosition(getPosition());
                    rect.setSize(getSize());
                    target.draw(rect, states);
                    for (unsigned int i = 0; i < sprites.size(); i++) {
                        target.draw(sprites[i], states);
                    }
                    for (unsigned int i = 0; i < shapes.size(); i++) {
                        target.draw(*shapes[i], states);
                    }
                }
                void Panel::drawOn(RenderTarget& target, RenderStates states) {
                    if (scrollX || scrollY) {
                        target.draw(corner, states);
                    }
                    if (scrollX) {
                        target.draw(vertScrollBar, states);
                    }
                    if (scrollY) {
                        target.draw(horScrollBar, states);
                    }
                    std::cout<<"disable scissor test"<<std::endl;
                    glCheck(glDisable(GL_SCISSOR_TEST));
                }

    Ca m'affiche bien disabled et pourtant lorsque je dessine sur ma sous fenêtre ce code ci :
    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (getWindow().getName() == "WAPPLICATIONNEW") {
                        GLboolean* params =  new GLboolean[1];
                        glGetBooleanv(GL_SCISSOR_TEST, params);
                        if (params[0] == GL_TRUE)
                           std::cout<<getWindow().getName()<<" true"<<std::endl;
                        else
                           std::cout<<getWindow().getName()<<" false"<<std::endl;
                    }

    Parfois ça m'affiche true, parfois ça m'affiche false hors que ça devrait tout le temps m'afficher false car sur ma second fenêtre je ne dessine pas de panel et donc il doit rester désactivé. J'ai fais une recherche dans tout les fichiers du projets pour voir si je ne l'activais pas ailleurs mais non, il s'active et se désactive tout seul, c'est étrange.

  2. #2
    Invité
    Invité(e)
    Par défaut Haaaaan!!!!
    Il fallait activer le contexte opengl de la fenêtre....

    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
    32
     
    void draw(RenderTarget& target, RenderStates states) {
                    //states.transform = getTransform();
                    getWindow().setActive(true);
                    if (getWindow().getName() == "WAPPLICATIONNEW") {
                        GLboolean* params =  new GLboolean[1];
                        glGetBooleanv(GL_SCISSOR_TEST, params);
                        if (params[0] == GL_TRUE)
                           std::cout<<getWindow().getName()<<" true"<<std::endl;
                        else
                           std::cout<<getWindow().getName()<<" false"<<std::endl;
                    }
                    onDraw(target, states);
                    std::multimap<int, LightComponent*, std::greater<int>> sortedChildren;
                    for (unsigned int i = 0; i < children.size(); i++) {
                        sortedChildren.insert(std::make_pair(children[i]->getPriority(), children[i].get()));
                    }
                    std::multimap<int, LightComponent*, std::greater<int>>::iterator it;
                    for (it = sortedChildren.begin(); it != sortedChildren.end(); it++) {
                        if (it->second->isVisible()
                            && it->second->getPosition().x + it->second->getSize().x >= getPosition().x
                            && it->second->getPosition().y + it->second->getSize().y >= getPosition().y
                            && it->second->getPosition().x <= getPosition().x + getSize().x
                            && it->second->getPosition().y <= getPosition().y + getSize().y) {
                            /*if(name == "PFILES" && it == sortedChildren.begin()) {
                                std::cout<<"child pos : "<<it->second->getPosition()<<" child size : "<<it->second->getSize()<<std::endl;
                            }*/
                            it->second->draw(target, states);
                        }
                    }
                    drawOn(target, states);
                }
    Comme ça, ça va mieux!

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

Discussions similaires

  1. Réseau : Packet erroné ? Packet qui change tout seul ?
    Par rXpCH dans le forum Général Java
    Réponses: 3
    Dernier message: 05/03/2010, 13h40
  2. Réponses: 3
    Dernier message: 12/11/2008, 18h38
  3. Réponses: 8
    Dernier message: 18/06/2008, 17h56
  4. Variable de session qui change toute seule
    Par mijean dans le forum Langage
    Réponses: 5
    Dernier message: 21/05/2007, 14h42
  5. Ip qui change toute seul , je veux stoper..?
    Par loobstyle dans le forum Windows XP
    Réponses: 2
    Dernier message: 19/06/2006, 08h25

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