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 :

glColorMaterial(); GRRR. Très collant une fois enclenché !!


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 196
    Par défaut glColorMaterial(); GRRR. Très collant une fois enclenché !!
    Hello le monde.

    J'ai vraiment un problème sérieux avec cette *^$@! de "glColorMaterial();".

    J'illustre directement par un exemple:
    glColorMaterial(GL_FRONT, GL_SRC_COLOR);
    glEnable(GL_COLOR_MATERIAL);
    glDisable(GL_COLOR_MATERIAL);

    .... imaginez à partir de là des constructions basiques comme des GL_POINTS écrits en dur, donc juste après !
    Pourquoi, alors que j'enclenche et que je supprime DIRECTEMENT (donc JUSTE APRES) l'effet du "glColorMaterial();" y a t il une répercution sur les constructions situées en dessous (ET MEME AU DESSUS) de ces appels à "GL_COLOR_MATERIAL" ????

    Que faut-il pour TOUT supprimer ET/OU tout rétablir comme avant ??


    merci encore.

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Est ce que tu utilises le texturing ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 196
    Par défaut
    Bonjour Modjo!

    Est-ce que je texture mes objets ? Oui & Non.

    L'effet génant dont je te parles s'applique intégralement sur les objets texturés ET sur les points et quads (eux 2, non texturés).

    sinon oui, je texture au moins un objet dans la scène.

    que faut-il que je modifie ??
    merci encore pour ton aide.

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Et tes textures, sont configurés avec GL_COMBINE ou GL_MODULATE ? si oui, essaies GL_DECAL !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 196
    Par défaut
    Salut Modjo.

    Et tes textures, sont configurés avec GL_COMBINE ou GL_MODULATE ? si oui, essaies GL_DECAL !
    m_fonc_ActiveTexture(GL_TEXTURE0);
    glBindTexture (GL_TEXTURE_2D, *m_normal_map);
    glEnable(GL_TEXTURE_2D);

    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT); // Perform a Dot3 operation...
    glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_DOT3_RGB_EXT);

    glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE); // between the N (of N.L) which is stored in a normal map texture...
    glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND0_RGB_EXT, GL_SRC_COLOR);

    glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PRIMARY_COLOR_EXT); // with the L (of N.L) which is stored in the vertex's diffuse color.
    glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND1_RGB_EXT, GL_SRC_COLOR);

    // STAGE 1
    // Modulate the base texture by N.L calculated in STAGE 0.
    m_fonc_ActiveTexture(GL_TEXTURE1);
    glBindTexture (GL_TEXTURE_2D, *m_base_map);
    glEnable(GL_TEXTURE_2D);

    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT); // Modulate...
    glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE);

    glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_PREVIOUS_EXT);
    glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND0_RGB_EXT, GL_SRC_COLOR); // the color argument passed down from the previous stage (stage 0) with...

    glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_TEXTURE);
    glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND1_RGB_EXT, GL_SRC_COLOR); // the texture for this stage with.
    Voilà ce que je fais.
    J'utilise un combine pour exécuter un dot product ET un modulate.

  6. #6
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    La ca devient compliqué, je pensais que c'etait un simple cas de single texturing, mais dans ton cas, ...

    Désolé, je vois pas d'ou vient ton problème.
    Mais je vais plonger la dedans.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 196
    Par défaut
    Re-bonjour.

    Laisse tomber tous ces GL_xxx, oublie ca, non parce que j'ai déactivé tout .
    Et au bout du compte, j'en suis revenu en déactivant tout un tas de truc à des constructions basiques et ce, sans utiliser de textures.

    Et en fait:
    tous mes points, que j'ai grossi avec glPointSize(20), son tous blancs alors que j'ai mis un glColor3f(xxx) spécifique à chacun.
    Cela ne viens pas du glColorMaterial (que j'ai complètement enlevé) mais du fait que j'active le "lighting" avec glEnable(GL_LIGHTING);

    Si j'active PAS le lighting, mes points sont colorés, mais sans ombrages et lumières, bien-sûr.

    j'aimerais des points colorés, même en utilisant le lighting.
    comment fait-on ça????

    merci encore.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut Mieux vaut Tard ...
    Effectivement j'ai Observé cela....
    Ce n'est pas due au GL_LIGHTING ou GL_TEXTURE2D

    Quand Actives "GL_COLOR_MATERIAL", ca te détruit tes Paramètres :

    glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);

    Donc quand tu as Fini, tu fais:
    glDisable(GL_COLOR_MATERIAL);
    mais il faut re-paramétrer ton matériel :
    glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);

    Voilou...
    Tu as peut être Touvé la Réponse depuis ....:

Discussions similaires

  1. Checkbox très lente une fois bindée à un settings
    Par zebrette dans le forum Windows Forms
    Réponses: 6
    Dernier message: 24/10/2014, 10h37
  2. Modifier le PATH une fois pour toute
    Par elitost dans le forum Linux
    Réponses: 8
    Dernier message: 06/09/2009, 13h21
  3. [Thread]run une fois et plus apres
    Par maxvador dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 29/12/2004, 15h31
  4. [Initialisation] Remplir une structure une fois
    Par Kimael dans le forum Langage
    Réponses: 14
    Dernier message: 08/06/2004, 15h33
  5. Pb : malloc qui marche une fois sur deux .... ?
    Par guillaume_pfr dans le forum C
    Réponses: 14
    Dernier message: 21/07/2003, 09h52

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