Précédent   Forum des professionnels en informatique > Applications > Développement 2D, 3D et Jeux > API graphiques > OpenGL
OpenGL Forum d'entraide sur le développement en OpenGL. Avant de poster -> FAQ OpenGL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/01/2012, 15h27   #1
Invité de passage
 
Inscription : décembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 20
Points : 1
Points : 1
Par défaut Activer / Désactiver lumière

Bonjour,

Alors voilà, j'utilise openGL avec Qt, je j'essaye d'activer / désactiver un lumière.

Voilà tout d'abord mon code :
Code :
1
2
3
4
5
6
7
8
9
10
GLfloat	light_position[] = {lp1, lp2, lp3, lp4};
 
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
 
if (activePosition) {
   glEnable(GL_LIGHTING);
}
else {
   glDisable(GL_LIGHTING);
}
Le problème c'est que la lumière reste tout simplement toujours activé!
J'ai fait des tests pour vérifier que ma variable "activePosition" fonctionne bien, et pas de problème mes SIGNAL, SLOT et upadte() fonctionne bien!


Merci
aurelien36 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 00h52   #2
Responsable 2D/3D/Jeux

 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Étudiant
Inscription : mai 2008
Messages : 6 560
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 6 560
Points : 14 054
Points : 14 054
Bonjour,

Est ce que l'image est bien redessinée ?
Lorsque la lumière est désactivé, cela ne veut pas dire que la scène sera dans le noir. Pouvez vous nous montrer une capture d'écran de votre application ?
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 09h39   #3
Invité de passage
 
Inscription : décembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 20
Points : 1
Points : 1
Salut,

Voilà un screen du contexte openGl au démarrage de l'application :


Uploaded with ImageShack.us

Après le rendu ne change pas, que je décoche ou coche la case...


Merci
aurelien36 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 09h41   #4
Responsable 2D/3D/Jeux

 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Étudiant
Inscription : mai 2008
Messages : 6 560
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 6 560
Points : 14 054
Points : 14 054
Pouvons nous avoir plus de code ?

Utilisez vous les shaders ?
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 10h07   #5
Invité de passage
 
Inscription : décembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 20
Points : 1
Points : 1
Bonjour,

Non je n'utilise pas les shaders.

Code :
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
33
34
35
36
void Mod3DRender::paintGL()
{
    glClearColor(m_backgroundColor.redF(), m_backgroundColor.greenF(), m_backgroundColor.blueF(), 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
 
    // Lumière
    GLfloat	light_diffuse[]	= {ld1, ld2, ld3, ld4};
    GLfloat	light_position[] = {ld1, lp2, lp3, lp4};
 
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
 
    if (activePosition) {
        glEnable(GL_LIGHTING);
    }
    else {
        glDisable(GL_LIGHTING);
    }
 
    if((this->listeObjet.size()) > 0){
        glColor3f(m_modelColor.redF(), m_modelColor.greenF(), m_modelColor.blueF());
        // Affichage de l'objet
        for (int i = 0; i < listeObjet.size(); i++) {
            if(this->listeObjet.at(i)->doRender==true){
                //glPushMatrix(); // On enregistre la transformation actuelle
                glLoadIdentity(); // On remet tout à zéro
                // Transformations
                glTranslatef(this->listeObjet.at(i)->movex, -(this->listeObjet.at(i)->movey), 0.0f);
                glRotatef(-(this->listeObjet.at(i)->angley),1.0,0.0,0.0);
                glRotatef(-(this->listeObjet.at(i)->anglex),0.0,1.0,0.0);
                glScalef(this->listeObjet.at(i)->scale, this->listeObjet.at(i)->scale, this->listeObjet.at(i)->scale);
                this->listeObjet.at(i)->render(m_wireframeEnabled, m_normalsEnabled); // On effectue le render
            }
        }
    }
}


Merci
aurelien36 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 10h57   #6
Responsable 2D/3D/Jeux

 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Étudiant
Inscription : mai 2008
Messages : 6 560
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 6 560
Points : 14 054
Points : 14 054
Pouvez vous faire un truc du genre :
Code :
1
2
3
4
5
6
7
8
9
 
if (activePosition) {
        glEnable(GL_LIGHTING);
        qDebug() << "Light enabled";
    }
    else {
        glDisable(GL_LIGHTING);
        qDebug() << "Light disabled";
    }
Et vérifier que le comportement est bien celui escompté ?
(qDebug() nécessite d'inclure <QDebug>)
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 11h33   #7
Invité de passage
 
Inscription : décembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 20
Points : 1
Points : 1
Bonjour,

Cela marche parfaitement, j'ai bien "Light enabled", "Light disabled" qui s'affiche dans la console lorsque je coche, décoche la case


Merci
aurelien36 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 12h47   #8
Membre à l'essai
 
Inscription : septembre 2009
Messages : 61
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 61
Points : 23
Points : 23
Ne faut il pas laisser GL_LIGHTING activé et plutôt désactiver GL_LIGHT0 ?

Parce qu'il me semble que GL_LIGHTING agit sur le fait qu'on inclut ou non le calcul de l'éclairage avec des lumières sur le rendu final.
le_ptit_lutin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2012, 17h17   #9
Expert Confirmé
 
Avatar de DonQuiche
 
Inscription : septembre 2010
Messages : 1 350
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 350
Points : 2 510
Points : 2 510
N'y aurait-il pas dans le code de rendu un autre appel à glEnable(GL_LIGHTING) ?
Et l'appel montré dans le code fourni est-il bien fait sur le même thread que celui du rendu ?
DonQuiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h56.


 
 
 
 
Partenaires

Hébergement Web