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 :

Comment lire les pixels d'une texture en memoire


Sujet :

OpenGL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut Comment lire les pixels d'une texture en memoire
    Je suis en train de mettre en place un système de picking color et donc j'ai besoin de lire le pixel qui est à l'ecran sous la souris.

    Je crée un rendu off screen dans un FBO et j'ai donc besoin de récupérer les pixels de celui-ci.

    Sur internet j'ai vu la fonction glReadPixel mais il me semble avoir compris que celle ci est plutôt lente et obsolète.
    J'ai aussi vu des façon de faire avec des PBO mais c'est aussi obsolètes et incompatible avec les FBO.

    Est ce que quelqu'un aurai une technique à me proposer? merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Points : 486
    Points
    486
    Par défaut
    Bonjour!

    Si tu utilises un FBO, tu dois savoir qu'on peut s'en servir pour effectuer le rendu directement dans une texture (et si c pas le cas, c'est expliqué ici: http://www.gamedev.net/reference/art...rticle2331.asp)

    Une fois que tu as ta texture: tu peux utiliser glGetTeximage comme suit, ce qui te permet de récupérer un tableau de valeurs RGBA:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GLubyte* texBits = new GLubyte[m_width * m_height * 4];
    	glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, texBits);
    Apres je ne sais pas a quel point glGetTexImage est rapide,mais déjà plus que glReadPixels à priori.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par ShevchenKik Voir le message
    Bonjour!

    Si tu utilises un FBO, tu dois savoir qu'on peut s'en servir pour effectuer le rendu directement dans une texture (et si c pas le cas, c'est expliqué ici: http://www.gamedev.net/reference/art...rticle2331.asp)
    Ne t'inquète pas je maitrise cette partie
    En fait je fais un rendu MRT pour faire ensuite du differed rederring. Dans ce cas autant récupérer les info de picking par des couleurs.

    Citation Envoyé par ShevchenKik Voir le message
    Une fois que tu as ta texture: tu peux utiliser glGetTeximage comme suit, ce qui te permet de récupérer un tableau de valeurs RGBA:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GLubyte* texBits = new GLubyte[m_width * m_height * 4];
    	glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, texBits);
    Apres je ne sais pas a quel point glGetTexImage est rapide,mais déjà plus que glReadPixels à priori.
    Je te remercie, je vais regarder ça. D'autre avis seraient les bienvenues

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    ça fonctionne bien , je mets en résolu

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

Discussions similaires

  1. [FAQ][SDL] Comment récupérer les pixels d'une surface ?
    Par Fiquet dans le forum Contribuez
    Réponses: 2
    Dernier message: 19/09/2010, 11h24
  2. Comment lire les propriétés d'une imprimante ?
    Par zidenne dans le forum Langage
    Réponses: 18
    Dernier message: 06/08/2010, 11h26
  3. Réponses: 3
    Dernier message: 31/01/2007, 17h46
  4. comment lire les donner d'une resource?
    Par yoyolerigolo dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 31/07/2006, 10h04
  5. Réponses: 3
    Dernier message: 15/07/2006, 05h18

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