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 :

Créer des patrons de hachurage


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Par défaut Créer des patrons de hachurage
    Salut, salut,

    j'éssaye de créer des patrons de hachurage pour des polygones,
    j'utilise donc GL_POLYGON_STIPPLE et tout marche bien

    Mais les patrons de hachurage sont des matrices 32x32 (cf ci dessous l'exemple d'une mouche)
    et je me demandais si quelqu'un avait une idée pour généré facilement ce type de matrice, parce qu'à la main c'est légèrement fastidieux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    GLubyte mouche[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 
    				 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60, 0x04, 0x60, 0x06, 0x20, 
    				 0x04, 0x30, 0x0C, 0x20, 0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 
    				 0x30, 0x20, 0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22, 
    				 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 
    				 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 
    				 0x44, 0x01, 0x80, 0x22, 0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 
    				 0x80, 0xCC, 0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, 
    				 0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0, 0x03, 0x31, 
    				 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0, 0x06, 0x64, 0x26, 0x60, 
    				 0x0c, 0xcc, 0x33, 0x30, 0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 
    				 0x23, 0x08, 0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08, 
    				 0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08};

  2. #2
    Membre expérimenté Avatar de Sixissor
    Étudiant
    Inscrit en
    Février 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 206
    Par défaut
    Salut.

    A priori je connais pas de prog qui fasse ça...

    Sinon y'a une autre solution: tu prends Paint => Image 32x32, tu y dessines ce que tu veux => chargement de ta texture sur la face de ton polygone.

  3. #3
    Membre confirmé Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Par défaut
    Merci Sixissor, pour cette solution mais peux-tu m'expliquer un peu plus comment faire :
    Pour placer une texture sur un polygon pas de problème

    Mais un l'occurence je souhaite afficher mon polygone, par exemple avec des hachures, dont la couleur est définie pendant l'éxécution de mon programme

    Donc, j'ai du mal à trouver comment afficher la texture en changeant sa couleur.

  4. #4
    Membre expérimenté Avatar de Sixissor
    Étudiant
    Inscrit en
    Février 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 206
    Par défaut
    Salut.

    Tiré de la FAQ OpenGL de developpez.com (section problèmes)
    [...]
    En mode REPLACE, OpenGL ne prend en compte lors de l'affichage que la couleur de la texture, alors qu'en mode MODULATE, la couleur de la texture est multipliée par la couleur du polygone.

    Pour definir le mode d'utilisation de la texture il faut utiliser le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    glBindTexture(/* binding de la texture dont on veut modifier les parametres */);
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, parametre);
    Où parametre vaut GL_REPLACE ou GL_MODULATE, selon ce que l'on veut réaliser.
    Et voici une autre source (http://helios.univ-reims.fr/Labos/LE...ttar/03OpenGL/: Eric Bittar à l'Université de Reims, très bons tutos OpenGL)
    Ensuite choisir le mode de placage de la texture avec glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, parametre);

    * Le mode replace remplace la couleur de l'objet par celle de la texture.
    * Le mode modulate utilise la valeur de la texture en modulant la couleur précédente de l'objet.
    * Le mode blend mélange la couleur de la texture et la couleur précédente de l'objet.
    * Le mode decal avec une texture RGBA utilise la composante alpha de la texture pour combiner la couleur de la texture et la couleur précédente de l'objet.
    Citation Envoyé par Mucho
    Mais un l'occurence je souhaite afficher mon polygone, par exemple avec des hachures, dont la couleur est définie pendant l'éxécution de mon programme

    Donc, j'ai du mal à trouver comment afficher la texture en changeant sa couleur.
    Donc maintenant il ne te reste plus qu'à utiliser le paramètre modulate pour la texture et changer la couleur du polygone avec glColor3f() et voilà.

    ++

  5. #5
    Membre confirmé Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Par défaut
    merci encore pour toutes ces infos,

    il me reste toutefois un problèmes :
    le hachurage est réalisé par rapport aux pixels et est donc indépendant de la taille du polygone, et il me parait compiqué de calculer les coordonnees qui vont bien pour appliquer le bon nombre de texture en fonction du zoom (puisque ce sont, a priori, des polygones quelconques).

Discussions similaires

  1. Merci de nous aider à créer des ressources (FAQ et sources)
    Par Community Management dans le forum Evolutions du club
    Réponses: 29
    Dernier message: 19/10/2015, 00h35
  2. [couleurs] créer des nuances
    Par enilem dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/06/2003, 13h56
  3. Créer des objets sur la pile ?
    Par Cornell dans le forum Langage
    Réponses: 8
    Dernier message: 03/03/2003, 11h47
  4. DirectDraw: Créer des surfaces 256 couleurs
    Par Magus (Dave) dans le forum DirectX
    Réponses: 5
    Dernier message: 14/10/2002, 22h28
  5. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22

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