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 :

Relation entre les Pixel Buffer Object (PBO) et les textures


Sujet :

OpenGL

  1. #1
    Membre confirmé Avatar de Narann
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut Relation entre les Pixel Buffer Object (PBO) et les textures
    Bonjours,

    J'ai une question concernant la relation entre les Pixel Buffer Object (PBO) et les textures.

    J'ai beau lire la page dediee, je ne suis toujours pas sûr de comprendre.

    La phrase suivante n'est pas claire pour moi:

    PBOs are not connected to textures. They are only used to perform pixel transfers; the buffer objects used in this process do not become connected to the texture in any way. The storage for the image data remains with the texture.
    1) Si j'upload un pixel buffer object de 500MB, puis que je bind le dis buffer puis fais un glTexImage2D(..., NULL), j'aurais maintenant 2x500MB (1GB) dans ma VRAM: 500MB pour le PBO et 500MB pour la texture. C'est bien ça?

    2) Si c'est le cas, est-il possible d'avoir un accès plus direct a la texture; du genre: CPU <- texture -> GPU? Et si oui, comment?

    Un grand merci d'avance!

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 032
    Billets dans le blog
    12
    Par défaut
    Salut!

    Réponse rapide:
    1) oui
    2) oui, en utilisant glTextureSubImage.

    Réponse longue:
    Les PBO sont utilisés pour pouvoir optimiser le stockage de la texture au niveau du driver.
    En la mettant accessible uniquement depuis le GPU, le driver peut (idéalement) la placer dans un emplacement plus rapidement accessible pour lui.
    Les PBO sont alors utilisés pour effectuer les transferts CPU <-> GPU, les copies vers/depuis la texture sont alors faits en GPU <-> GPU.
    Mais évidemment, cela vient avec le drawbacks que tu as cité (double utilisation de VRAM).
    Tiens, un peu de lecture sur les PBO: http://www.songho.ca/opengl/gl_pbo.html
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre confirmé Avatar de Narann
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Merci beaucoup, c'est un peu plus clair! L’intérêt reste un peu flou pour moi (pourquoi utiliser deux fois la mémoire de la VRAM...).

    J'avais lu la page de songho mais l’intérêt pratique n'est pas encore clair. Pourquoi devrais-je avoir besoin des PBO? Dans quel cas on les utilisent?

  4. #4
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 032
    Billets dans le blog
    12
    Par défaut
    L'intérêt vient quand on met à jour très fréquemment la texture, il vaut alors mieux passer par des staging buffers (les PBO), à la manière décrite par Songho (2 PBO pour la texture) car tu n'as pas forcément envie que les performances de rendu soient impactées par ces uploads incessants.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. Réponses: 54
    Dernier message: 26/05/2016, 13h27
  2. Manipulation des pixel buffer objects
    Par le_ptit_lutin dans le forum OpenGL
    Réponses: 13
    Dernier message: 09/08/2011, 09h34
  3. Problème avec les Vertex Buffer Objects
    Par mysth dans le forum OpenGL
    Réponses: 0
    Dernier message: 18/05/2009, 21h31
  4. Lire les pixels de grandes images sans les ouvrir
    Par psicot dans le forum Multimédia
    Réponses: 1
    Dernier message: 16/04/2007, 18h59

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