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 :

L'ordre d'affichage 2d (GUI) Interface Utilisateur


Sujet :

OpenGL

  1. #1
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut L'ordre d'affichage 2d (GUI) Interface Utilisateur
    Salut,

    Ca fait un petit moment que je n'ai plus touché le systeme 2D (l'interface utilisateur) de mon moteur, la je l'ai un peu revu et appliqué un theme correct, et tout pour dire, que si j'ai fait tout ca, je DOIS arranger le gros défaut de ma GUI, qui est, l'ordre d'affichage des fenetres, que je n'ai pas réussi encore;

    Voici mon avancement actuel pour ma GUI (biensur ce n'est pas tout, elle a aussi des editboxes, scrolls bard, .., mais on s'en fou ):



    Alors disons que par example, la place de mes fenetres, ce sont des quads 2d, et que le dernier dans le code est affiché en premier dans OpenGL, chaque quad a la propriété d'etre actif ou pas ..

    Maintenant, quand je selectionne un quad, il devient actif .., et donc la est mon probleme, comment definir la position a l'ecran, de la premiere a la plus lointaine fenetre (quads) ..

    Serait quelqun aussi en train de dévélopper sa GUI GL en ce moment? Si oui, comment gerez vous l'ordre d'affichage?

    Merci pour toute aide et désolé pour ce long post.

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Dans la version de ma GUI, je ne gére pas de profondeur puisque je désactive GL_DEPTH_TEST...

    Donc ce que je fais c'est que je mets les informations nécessaire pour le rendu (un pointeur vers l'instance de l'objet à dessiner) dans une liste chaînée.

    Je parcours cette liste dans l'ordre pour la dessiner donc le dernier élément de ma liste se retrouve dessiner devant.

    Ensuite, lorsque je clique sur une fenêtre, je la déplace dans la liste pour que son rendu se fasse en dernier.

    Cette liste est aussi pratique pour la gestion des clics. En effet, si je sais qu'il y a un clic en (x,y), je parcours ma liste pour savoir quelle fenêtre est touchée par (x,y). En sauvegardant toujours le pointeur de l'objet, à la fin du parcours, je récupére le pointeur de la fenêtre la plus en avant lors du rendu (donc bien celle qui m'intéresse)...

    Voili voilou,
    C'est tout, pas plus compliqué que cela...

    Jc

  3. #3
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    Citation Envoyé par fearyourself
    Dans la version de ma GUI, je ne gére pas de profondeur puisque je désactive GL_DEPTH_TEST...
    oui mais la, il utilise de l'alpha blending, donc il faut effectivement afficher les fenetres dans le bon ordre pour avoir un rendu correct.
    Citation Envoyé par fearyourself
    Je parcours cette liste dans l'ordre pour la dessiner donc le dernier élément de ma liste se retrouve dessiner devant.

    Ensuite, lorsque je clique sur une fenêtre, je la déplace dans la liste pour que son rendu se fasse en dernier.
    je fait pareil, c'est, à mon avis, le meilleur rapport flexibilitée/facilité de programmation
    Citation Envoyé par fearyourself
    Cette liste est aussi pratique pour la gestion des clics. En effet, si je sais qu'il y a un clic en (x,y), je parcours ma liste pour savoir quelle fenêtre est touchée par (x,y). En sauvegardant toujours le pointeur de l'objet, à la fin du parcours, je récupére le pointeur de la fenêtre la plus en avant lors du rendu (donc bien celle qui m'intéresse)...
    encore pareil

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Je pense que tout le monde a fait la meme chose
    J'utilise juste un vector trié par un param de profondeur car de toute facon on depasse rarement les 30~40 elements a l'ecran et dans ces valeurs le vector et plus rapide que la liste chainé, mais l'idée est la meme.

  5. #5
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Désolé de répondre aussi tard, en effet en général dans chaque GUI on arrive au point de désactiver GL_DEPTH_TEST, et donc on a le besoin de trouver une soluce dans ce sens la et c'est pas mal l'idée avec une liste chaînée. Problème résolu! Merci!

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

Discussions similaires

  1. Bugs d'affichage sur l'interface utilisateur
    Par polien007 dans le forum Unity
    Réponses: 6
    Dernier message: 17/01/2015, 16h21
  2. Interface utilisateur - affichage des cellules verrouillées
    Par heriss dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/01/2014, 13h37
  3. Réponses: 2
    Dernier message: 31/10/2003, 16h32
  4. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27

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