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 :

Buffer Storage et fencing [OpenGL 4.x]


Sujet :

OpenGL

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Points : 95
    Points
    95
    Par défaut Buffer Storage et fencing
    Bonjour à vous tous :-).

    Je suis récemment passé aux Buffer Storage, afin de réduire le goulot d'étranglement du driver à coup de glmapbuffer etc :-).

    Voilà ma façon de créer le buffer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    glNamedBufferStorageEXT(mIdBuffer, size, NULL, GL_MAP_COHERENT_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_WRITE_BIT);
        mPtr = glMapNamedBufferRangeEXT(mIdBuffer, 0, size, GL_MAP_COHERENT_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_WRITE_BIT);
    Seulement, maintenant j'ai un problème. En effet, lorsque j'effectue mon rendu, j'ai l'impression qu'il y a un problème quand je rempli le buffer car l'affichage de mes ombres diffère de la version en utilisant glmapBuffer.

    Après renseignements, j'ai lu qu'il fallait utilisé la synchronisation,afin d'attendre que la copie soit finis avant de continuer, mais j'avoue ne pas savoir m'en servir ...

    Voilà ce que j'ai fait, les 2 fonctions englobé sont celles qui modifie les buffers... A mon avis, ce n'est pas la bonne méthode ^^, pouvez vous m'aiguiller :-).

    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 Renderer::render(void)
    {
        mat4 viewProjection = perspective(70.0f, (float) QGM_Device->getWidth() / (float) QGM_Device->getHeight(),
                                          QGM_Device->getNear(), QGM_Device->getFar()) * QGM_Camera->getMatrix();
     
        mPointLightRenderer.begin();
     
        GLsync sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
            QGM_NodeRoot->addLight(mat4(1.0f), viewProjection, 1.0f); // On ajoute toutes les lumières à notre rendu
        glClientWaitSync(sync, GL_SYNC_FLUSH_COMMANDS_BIT, 0);
     
        QGM_Device->setDepthTest(true);
        QGM_Device->setCulling(NONE_CULLING);
        bindForDepthPass();
     
        sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
            mPointLightRenderer.renderDepthMap(mShadowBuffer, 0); // On crée nos DepthMaps  
        glClientWaitSync(sync, GL_SYNC_FLUSH_COMMANDS_BIT, 0);
     
        mPointLightRenderer.end();
     
        QGM_Device->setCulling(BACK_CULLING);
        bindForGeometryPass();
        QGM_NodeRoot->render(mat4(1.0f), viewProjection); // On rend la géométrie
     
        QGM_Device->setCulling(FRONT_CULLING);
        QGM_Device->setDepthTest(false);
        QGM_Device->setBlending(true);
            lightPass();
            finalPass();
        QGM_Device->setBlending(false);
    }
    Merci de votre aide :-) .

  2. #2
    Membre actif Avatar de monwarez
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 144
    Points : 293
    Points
    293
    Par défaut
    Bonjour , pouvez vous joindre des captures d'écrans d'avant et après la mise en place du buffer storage ?
    Je n'ai pas encore trouvé beaucoup de ressource sur le sujet , peut être que ceci pourrait vous aider
    https://www.opengl.org/registry/spec...er_storage.txt

  3. #3
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Coucou :-).
    En fait le problème était dû au fait que je mettais 0 pour le glClientWaitSync ...

    J'ai honte xD.

    Merci tout de même .

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

Discussions similaires

  1. À la découverte des Shader Storage Buffer Objects d'OpenGL 4.3
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 10/08/2014, 18h39
  2. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00
  3. Alpha blending et Z-buffer directx 8
    Par Cesar4 dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2002, 12h58

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