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 :

Bug de texturing


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut Bug de texturing
    Bonjour

    Je développe actuellement un moteur 3D DirectX/OpenGL, plus précisément le GUI, et j'ai un bug visuel au niveau d'OpenGL. On dirait un problème de texturing : du mauve apparait sur mes polygones.
    Etant plutôt habitué à DirectX (je me suis mis à OpenGL depuis peu), j'ai dû mal à cerner ce qui peut clocher. Surement un state que j'ai oublié de parametrer. Est-ce que quelqu'un voit ce que ça pourrait être ?

    Voilà un screen montrant le bug :



    Merci d'avance

  2. #2
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 477
    Par défaut
    Aucune idée c'est bizard ton truc
    Ce n'est pas du au fait que tes composantes rvb ne sont pas dans le bon ordre ? CA te fait ça avec toutes les textures ? Sinon montre ton code de chargement d"es textures & quand tu les appliques, on verra peut - être mieux.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Je ne pense pas que ça vienne des composantes, regarde l'intérieur de la fenêtre, il devrait être totalement blanc mais en OpenGL il ya cette bordure mauve

    Voilà le chargement (je charge à partir d'une structure Pixels qui contient le tableau de pixels) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    unsigned int Texture;
    glGenTextures(1, &Texture);
     
    // Conversion CColor -> ABGR
    std::vector<unsigned long> OGLPixels(m_Dimensions.x * m_Dimensions.y);
    std::transform(Pixels.GetPixels(), Pixels.GetPixels() + OGLPixels.size(), OGLPixels.begin(), std::mem_fun_ref(CColor::ToABGR));
     
    // Génération de la texture
    glDisable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, Texture);
    gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, m_Dimensions.x, m_Dimensions.y, GL_RGBA, GL_UNSIGNED_BYTE, &OGLPixels[0]);
    glBindTexture(GL_TEXTURE_2D, NULL);
    Et l'application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    glActiveTextureARB(GL_TEXTURE0_ARB);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, Texture);
    Et dans un précédent test de texture (avec une autre texture) il me semble que ça fonctionnait correctement, pourtant le code est le même

    Au passage, comment je peut faire pour spécifier un format de texture autre que GL_RGBA ? Par exemple du 16 bits A1R5G5B5, ou du compressé, ou du 32 bits ARGB, formats flottants 128 bits, etc... ?

  4. #4
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 477
    Par défaut
    bah je vois pas

  5. #5
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 477
    Par défaut
    Ah ouais si peut-être :
    dans ton gluBuild2DMipMap(...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, m_Dimensions.x, m_Dimensions.y, GL_RGBA, GL_UNSIGNED_BYTE, &OGLPixels[0]);
    ton deuxiéme argument est GL_RGBA, définit dans gl.h comme 0x1908.
    Or selon la référence de gluBuild2DMipMap, c'est le nombre de composante que tu doit rentrer:

    gluBuild2DMipmaps
    NAME
    gluBuild2DMipmaps -- create 2-D mipmaps
    C SPECIFICATION
    int gluBuild2DMipmaps(GLenum target,
    GLint components,
    GLint width,
    GLint height,
    GLenum format,
    GLenum type,
    const void *data)

    PARAMETERS
    target
    Specifies the target texture. Must be GL_TEXTURE_2D.

    components
    Specifies the number of color components in the texture. Must be 1, 2, 3, or 4.

    width, height
    Specifies the width and height, respectively, of the texture image.

    format
    Specifies the format of the pixel data. Must be one of: GL_COLOR_INDEX, GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_RGBA, GL_LUMINANCE, and GL_LUMINANCE_ALPHA.

    type
    Specifies the data type for data. Must be one of: GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, or GL_FLOAT.

    data
    Specifies a pointer to the image data in memory.
    donc si tu met 4 à la place de GL_RGBA, ça marchera peut-être mieux.

    Eh non je viens de tester dans mon moteur...et ça change pas grand chopse...enfin teste toujours, de toute façon la fonction doit être utilisée comme ça.


    Sinon qu'es ce que tu fait la ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::mem_fun_ref(CColor::ToABGR)
    fait aussi un glColor4f(1.0f,1.0f,1.0f,1.0f); avant d'appliquer ta texture à ton objet pour t'assurer que aucune couleur d'un objet precedent ne viens ce melanger avec ta texture.

    bonne chance.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    J'ai changé GL_RGBA en 4, j'ai ajouté un glColor4f avant d'appliquer la texture, mais... toujours pareil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::mem_fun_ref(CColor::ToABGR)
    Ca convertit la couleur en ABGR (c'est équivalent à OGLPixel[i] = Pixels.GetPixels()[i].ToABGR();)

    Je vais faire quelques tests en bidouillant le tableau de pixel, pour voir si ce n'est pas la texture qui est mal générée.

    D'autres idées ?

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Bon j'arrive pas à grand chose, avec certaines images ça marche bien, avec d'autres non. J'ai l'impression que c'est la couleur d'à coté qui "bave" dans ma texture, j'ai essayé de mettre les paramètres de wrapping à GL_CLAMP, ça ne change rien.

    Voilà voilà, si quelqu'un a une idée de génie, elle sera la bienvenue.

  8. #8
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 477
    Par défaut
    Pas trop.
    Par contre je ne fais jamais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    glBindTexture(GL_TEXTURE_2D, NULL);
    c'est pour qu'opengl ne pointe sur aucune texture ?
    Parce que en général j'ai plutôt vu des glDisable(GL_TEXTURE_2D);
    mais ce ne dois pas être source de probléme...

    Je te file mes fonctions de chargement de texture, ça pourra peut-être t'aider, qui sait : (c'est du C)

    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 listTexture(unsigned int liste,Bmp* bmp)
    {
      glBindTexture(GL_TEXTURE_2D, liste);
      gluBuild2DMipmaps(GL_TEXTURE_2D,  GL_RGB8 , bmp->Width , bmp->Height , GL_RGB, GL_UNSIGNED_BYTE, bmp->Data );
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,  GL_LINEAR_MIPMAP_LINEAR);
      glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//_MIPMAP_NEAREST);
     }
     
    bool genTextureGL(char BmpFile[],unsigned int* textureList)
    {
     
      Bmp bmp;
     
      glEnable(GL_TEXTURE_2D);
     
      if(!bmp.load(BmpFile))
      {
        printf("###Une erreur est survenue pendant le chargement de l'image %s \n",BmpFile);
        return false;
      }
      else
      {
        printf("\t--Texture OpenGL : %s \n",BmpFile);
        glGenTextures(1,textureList);
        listTexture(*textureList,&bmp);
        return true;
      }
     
    }

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Pour le glBindTexture avec NULL, le but est effectivement qu'OpenGL ne pointe sur aucune texture. Mais bon quant à savoir si c'est utile ou non, j'avoue que j'en ai aucune idée, c'est + un reflexe par rapport à DirectX

    J'ai essayé de rajouter tous les glTexParameterf, ça ne change presque rien. Il y a juste le coté gauche des fenêtres qui redevient bien blanc, ça correspond en fait au bord de la texture ; je suppose que c'est l'effet de GL_CLAMP.

    Et euh... une chtite question : lorsque je fais un glTextParameter, est-ce que la valeur sera associée à ma texture et sera active a chaque fois que j'activerai ma texture, ou bien est-ce que c'est une valeur globale qui est indépendante de la texture (comme en Dx) ?

  10. #10
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 477
    Par défaut
    comme en Dx : ici je spécifie les paramétres actifs qui seront valables dans ton mon programme. Si je les changes ensuite toutes les textures que j'afficherai ensuite auront ces nouveaux paramétres.

    [j'ai plus d'idéées mais je tente quand même]
    Ah autrement, tu n'as pas mis un materiau sur l'objet qui porte ta texture qui serait un peu violet/rose ?. Ou tu n'as pas une lumiére colorée dans le coin ??
    [/j'ai plus d'idéées mais je tente quand même]

    [EDIT]
    [un autre truc]
    essaye de remplacer gluBuild2DMipMap() par un glTexImage2D(...) pour voir si ça vient de la.
    [/un autre truc]

    et d'ailleur tu chercher à spécifier ton format de texture comme R5G5B5 : pour l'instant j'ai vu que tu pouvais le faire avec glTexImage2D mais pas avec gluBuild2DMipMap() (source MDSN ; http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc03_16jo.asp )
    [/EDIT]

  11. #11
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ah autrement, tu n'as pas mis un materiau sur l'objet qui porte ta texture qui serait un peu violet/rose ?. Ou tu n'as pas une lumiére colorée dans le coin ??
    Pas de lumière, pas de materiau, c'est même pas encore codé dans le moteur. Je n'ai que le texturing de base pour le moment.

    essaye de remplacer gluBuild2DMipMap() par un glTexImage2D(...) pour voir si ça vient de la.
    J'avais essayé, avec exactement les mêmes paramètres (et 0 pour les paramètres border et level), mais ça ne marchait pas, ma texture était toute blanche

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    A tout hasard, peut être que tes texture sont modulées avec la couleur courante (je crois que c'est le comportement par defaut) , essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
    Pour que ta texture remplace la couleur courante.

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Nop, toujours pas

    Enfin je pense que si ça avait été le problème, le glColor4f(1, 1, 1, 1) précédemment tenté aurait reglé le problème (enfin est-ce qu'il est pris en compte si j'utilise des VBOs ?).

  14. #14
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Oups oui, ça aurait résolu le probleme. Faut croire que j'ai pas tout lu trés attentivement .

    PS : rien a voir, mais est ce que tu as une démo de ce que tu fais accessible qque part (pas le code source , juste l'exe) ? je suis en train de reflechir a mon propre systeme de GUI et les exemples sont les bienvenus. D'ailleurs comme precedemment qd j'aurai terminé je mettrai les sources + exe en libre service.

  15. #15
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Voilà, j'ai uploadé la dernière version.

    Bon je suis en plein dedans, alors il manque plein de choses et il y a 1 ou 2 bugs à résoudre

  16. #16
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Une petite avancée : en désactivant le filtrage de texture (beh ouais... je fais de la 2D, c'est le premier truc que j'aurais dû faire ), les bordures parasites disparaissent, il ne reste plus que ce mauve venu de l'outer-space qui module toujours ma texture

  17. #17
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 477
    Par défaut
    Et dans ton executable , les deux fentres sont sont Dx, ou tu en a une Dx et une OpenGL ?? parce que sur mon PC elle sont de la même couleur

    [edit]
    j'ai dit nimport quoi la, non ?

  18. #18
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Pas mal déja ce que tu fais. Apparemment tu as choisis de "copier" un systeme à la windows, de mon côté je pense que dans le cadre d'un jeu ça ne sert pas a grand chose de pouvoir déplacer /agrandir/ fermer des "fenetres", mais l'exercice est interessant. Je m'oriente plutot vers une notion de "module" (pour pas dire fenêtre ) qui contiendra des contrôles, et qui sera doté d'une "animation" lors de l'apparition à l'ecran. Typiquement une appartion avec un alpha partant de 0 pour aller à 1, ou bien encore une arrivée depuis le haut vers le bas (genre warcraft 3) etc...

  19. #19
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Et dans ton executable , les deux fentres sont sont Dx, ou tu en a une Dx et une OpenGL ?? parce que sur mon PC elle sont de la même couleur
    J'avais fait un petit montage pour le screenshot, mais à l'éxecution tout est soit Dx soit OpenGL. Je ne sais même pas si on peut faire cohabiter les 2 APIs en même temps, et c'est pas le genre d'acrobatie que je m'amuserais à faire de toute façon . Dans la démo je n'ai donné que le renderer DirectX9.

    Pas mal déja ce que tu fais [...]
    En fait je pars un peu à l'arrache, j'ai pas trop reflechi à ce qui serait vraiment utile, je fais déjà le noyau du GUI et après je verrai ce qui sera chouette à ajouter comme fonctionnalité. En ce qui concerne les boutons min/max et ce genre de truc, c'est vrai que je me dis que ça sera pas forcément utile, alors je pense que je vais vraiment aller à l'essentiel pour le moment. La transparence et les animations me parraissent une bonne idée aussi, je pensais les faire par la suite . Et puis au pire je fais en sorte que l'utilisateur puisse créer ses propres contrôles facilement en dérivant mes classes, alors ça reste assez extensible.

  20. #20
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Bon ben finalement j'y suis arrivé, tout marche bien .

    Alors que je vous explique un peu à quel point c'était vicieux :

    - Mes loaders d'image (2 pour l'instant : bmp et tga), qui sont totalement indépendants, ont tous les 2 le même bug : ils inversent les composantes bleu et rouge.
    - Mes textures DirectX9 ont un bug : elles inversent les composantes bleu et rouge.
    - Mes textures OpenGL fonctionnent très bien
    Résultat : bug de loader + bug Dx9 = résultat correct

    C'est pour ça que je pensais que l'erreur venait d'OpenGL, alors que c'était en fait le seul truc qui fonctionnait correctement...
    Y a des fois j'ai quand même pas de chance...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [OpenGL 3.x] Bug textures noires
    Par RedSkidy dans le forum OpenGL
    Réponses: 1
    Dernier message: 16/06/2015, 09h39
  2. [OpenGL 3.x] [SFML] Bug avec le chargement des textures
    Par robinsondesbois dans le forum OpenGL
    Réponses: 2
    Dernier message: 15/04/2015, 16h42
  3. Réponses: 9
    Dernier message: 21/06/2007, 10h06

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