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 :

[2D] Lissage de courbes différent en fonction des machines


Sujet :

OpenGL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut [2D] Lissage de courbes différent en fonction des machines
    Bonjour à tous,

    Excusez moi d'ores et déjà si un tel sujet à été posté, si c'est le cas je n'ai pas su le trouver.

    Mon problème est le suivant.

    (précision : j'utilise la bibliothèque de fenêtre wxWidgets et l'objet GLCanvas de cette bibliothèque en tant que contexte opengl)

    Je réalise une petite application graphique de biologie moléculaire. Le principe est simple, il faut dessiner un "plasmide" sur lequel on peut placer/déplacer des éléments.

    Sans rentrer dans les détails, un plasmide est un cercle sur lequel on place différents objets graphiques censés représenter des gènes.

    Pour dessiner mon cercle, j'utilise le code suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            glVertexPointer(3, GL_FLOAT, 0, [pointeur vers le tableau des coordonnées]);
            glDrawElements(GL_LINE_LOOP, 360, GL_UNSIGNED_INT,  [pointeur vers le tableau des indices]);
    Chaque point est calculé à l'aide d'une fonction utilisant sinus et cosinus (classique).

    Pour la prise en charge du lissage, j'utilise les paramètres suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        glEnable(GL_LINE_SMOOTH);
     
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
     
        glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);

    Sur la machine sur laquelle je développe (portable), le rendu est de très bonne qualité et l'image produite est très belle, le cercle très lisse.

    Sur ma machine personnelle (domicile), le rendu est très médiocre, le lissage est fait de façon bizarre. Le cercle apparait granuleux, comme si chacun des points était lissé indépendament et pas en temps que "ligne".

    L'un d'entre vous aurait il déjà rencontré un tel problème, et si oui, d'ou vient il et surtout comment le corriger?

    Je vous remercie d'avance

    Ben


    PS : tant que j'y suis,sur certaines machines, le mécanisme de picking/sélection des objets ne fonctionne pas, ce problème est il indépendant ou les deux sont ils liés?

  2. #2
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 527
    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 527
    Points : 5 195
    Points
    5 195
    Par défaut
    Quel modèle de carte vidéo possèdes tu ?
    Tes drivers sont-ils à jour ?
    Ton contexte OpenGL est-il bien lié à une accélération hardware ?
    à ce sujet, tu crées ta fenêtre avec Win32=windows ou bie avec une bibliothèque autre telle que GLUT / SDL ?

    des questions à se poser dès le début dans ce cas là
    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.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par shenron666
    Quel modèle de carte vidéo possèdes tu ?
    Je travaille sur une ATI Mobility Radeon, et la carte de ma machine personelle (domicile) est une ATI 9000 Pro.

    J'ai testé mon programme sur un portable équipé d'un S3 Pro Savage DDR et il ne fonctionne presque pas. Le picking/sélection ne fonctionne pas et le cercle est non seulement mal lissé, mais deux lignes apparaissent au sein du cercle, lignes dont je n'ai jamais commandé le dessin.

    Tes drivers sont-ils à jour ?
    Oui, sur les 3 machines.

    Ton contexte OpenGL est-il bien lié à une accélération hardware ?
    Comment peut on vérifier/modifer ce paramètre? Cela vient peut être de là en effet.

    à ce sujet, tu crées ta fenêtre avec Win32=windows ou bie avec une bibliothèque autre telle que GLUT / SDL ?
    La fenêtre principale est crée et gérée par wxWidgets qui se base sur la bibliothèque du système, Windows en ce qui me concerne.

    Je n'ai pas utilisé la bibliothèque GLUT pour la gestion des fenêtres et des autres contrôles, mais uniquement wxWidgets.


    Merci pour cette réponse rapide

    Ben

  4. #4
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 527
    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 527
    Points : 5 195
    Points
    5 195
    Par défaut
    http://www.opengl.org/resources/tutorials/advanced/advanced97/programs/programs.html
    A cette adresse tu peux trouver un programme utilisant les lignes antialiasées (lien direct : http://www.opengl.org/resources/tutorials/advanced/advanced97/programs/line.c)

    Ce programe utilise GLUT, il serait intéressant que tu puisses l'essayer sur les 3 machines en question

    Je me demande en même temps si ce n'est pas un problème d'affichage par rapport à la surface qui est utilisée dans la fenêtre (je veux dire 16, 24 ou 32 bits avec ou sans canal alpha ?)
    donc peut-etre essayer de voir au niveau des paramètres de création de la fenêtre ?
    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.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Ok merci beaucoup.

    Sur ma machine portable les lignes sont lissées correctement.

    Je vais donc essayer ça chez moi sur les deux machines ou c'est censé mal fonctionner, on verra si ça vient de mon code ou des machines elles même.

    Merci encore

    Ben

Discussions similaires

  1. [XL-2010] accès différents en fonction des mots de passe
    Par funambule74 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/12/2013, 20h45
  2. HTML : afficher des tailles d’images différentes en fonction des écrans
    Par Gordon Fowler dans le forum Balisage (X)HTML et validation W3C
    Réponses: 20
    Dernier message: 28/10/2012, 12h20
  3. Comment afficher un menu différent en fonction des capacités du navigateur
    Par billouDu92 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 10/10/2011, 12h22
  4. Réponses: 2
    Dernier message: 24/03/2011, 11h39

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