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 :

Petit problèmes avec display list et transformations


Sujet :

OpenGL

  1. #1
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut Petit problèmes avec display list et transformations
    Bonjour,

    je débute en OpenGl et pour le moment, j'en suis arrivé aux display lists.

    Dans une appli précédente, j'avais fait une sphère qui tournait sur elle-meme, et donc je me suis dis, que je pouvais faire la meme chose avec une display list. Ma spère s'affiche bien, donc aucun problème de ce coté la, mais elle ne tourne pas, je pense que c'est l'endroit ou je met ma rotation qui est faux mais j'ai essayé plusieurs combinaisons et rien ne marche, pourtant ca doit etre possible avec une display list de faire des transfo, non ?

    Voici mon code :

    ma procédure qui crée la liste (elle est appelée dans WM_CREATE):
    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
    void CreateList() {
     
    sphere=glGenLists(1); 
     
    glNewList(sphere, GL_COMPILE); 
     
     gluQuadricTexture(Quadric1, true); 
     gluQuadricDrawStyle(Quadric1, GLU_FILL); 
     
     rot++; 
     glRotated(rot,1,0,0); 
     glRotated(rot,0,1,0);
     
     gluSphere(Quadric1,3,50,50);
     
    glEndList(); 
    }
    ensuite ma procédure repaint (appelée dans WM_PAINT):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void RePaint() {  
     glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     glMatrixMode (GL_MODELVIEW); 
     glLoadIdentity (); 
     
     gluLookAt(x,0,z,x,0,z+10,0,1,0); 
     
     glBindTexture(GL_TEXTURE_2D, texture[filt]); 
     
     glCallList(sphere); 
     
     SwapBuffers (DC); 
    }
    Je ne sais pas comment pallier à ce problème...

    Merci d'avance pour celui ou ceux qui me répondront

  2. #2
    Membre éclairé Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Points : 693
    Points
    693
    Par défaut
    En fait il ne faut pas que tu fasse de calcul dans une display list. Par exemple ton rot++ ne sera pas fait au moment du glCallList

    donc il faudrait plus faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void CreateList() {
     
    sphere=glGenLists(1);
     
    glNewList(sphere, GL_COMPILE);
     
     gluQuadricTexture(Quadric1, true);
     gluQuadricDrawStyle(Quadric1, GLU_FILL);
     
     gluSphere(Quadric1,3,50,50);
     
    glEndList();
    }
    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
    void RePaint() { 
     glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     glMatrixMode (GL_MODELVIEW);
     glLoadIdentity ();
     
     gluLookAt(x,0,z,x,0,z+10,0,1,0);
     
     glBindTexture(GL_TEXTURE_2D, texture[filt]);
     
    rot++;
     glRotated(rot,1,0,0);
     glRotated(rot,0,1,0); 
     glCallList(sphere);
     
     SwapBuffers (DC);
    }

  3. #3
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    Pour résumer, une display list mémorise des appels à la machine opengl
    donc comme le dit MatRem, ton rot++ n'est pas mémorisé puisque tu ne fait pas appel à opengl
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  4. #4
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Ok ca marche, merci bien

    P.S. Est ce normal qu'avec toutes mes applications OpenGl, j'emploie 100% du processeur meme ici avec une petite sphére qui tourne sur elle-meme

  5. #5
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par wichtounet
    P.S. Est ce normal qu'avec toutes mes applications OpenGl, j'emploie 100% du processeur meme ici avec une petite sphére qui tourne sur elle-meme
    Oui. A moins que tu n'ajoutes du code qui endort le processus, un programme temps réel va toujours utiliser au maximum le CPU. Ce qui n'a rien d'alarmant, puisque c'est du CPU qui ne serait pas utilisé sinon.

  6. #6
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par Loulou24
    Citation Envoyé par wichtounet
    P.S. Est ce normal qu'avec toutes mes applications OpenGl, j'emploie 100% du processeur meme ici avec une petite sphére qui tourne sur elle-meme
    Oui. A moins que tu n'ajoutes du code qui endort le processus, un programme temps réel va toujours utiliser au maximum le CPU. Ce qui n'a rien d'alarmant, puisque c'est du CPU qui ne serait pas utilisé sinon.
    ok, tu me rassures beaucoup

    Je me demandais si j'étais encore plus nul que je ne le pensais :p

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

Discussions similaires

  1. petit problème avec les listes chainées
    Par djinpark1 dans le forum Débuter
    Réponses: 4
    Dernier message: 30/06/2009, 17h11
  2. Petits problèmes avec les listes
    Par cepekinio dans le forum Prolog
    Réponses: 4
    Dernier message: 30/10/2007, 13h23
  3. (Petit ?) problème avec une page contenant du Flash
    Par ologram dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/09/2005, 18h45
  4. Petit problème avec SDL
    Par Nyarlathotep dans le forum C
    Réponses: 10
    Dernier message: 01/07/2005, 09h10

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