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

Lazarus Pascal Discussion :

GLScene + Linux : problème de rendu (OK sous Windows)


Sujet :

Lazarus Pascal

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut GLScene + Linux : problème de rendu (OK sous Windows)
    Bonjour à tous,

    J'en arrive à poster mon problème ici car après avoir galéré plusieurs jours je ne trouve toujours pas de solution à mon problème...
    Je développe (avec Lazarus 2.0.12 et GLScene sous Linux) un petit programme qui affiche des modèles 3D assez simplistes (génération PlayStation 1) composés de triangles avec couleurs et textures. Après avoir écrit le code permettant de lire un fichier 3D pour en faire le rendu, j'avais un résultat curieux que je ne comprenais pas.

    Au bout d'un moment j'ai fait un test très simple : créer une scène 3D simple avec un cube et un mesh (composé d'un simple triangle) qui passe au travers de mon cube et là surprise : défaut d'affichage du cube sous Linux alors que le même projet est correctement rendu sous Windows.

    Voici le rendu sous Linux (problème : l'angle du cube ne passe pas par-dessus le triangle) :
    Nom : linux.gif
Affichages : 86
Taille : 350,9 Ko

    Et sous Windows (là pas de souci de rendu) :
    Nom : windows.gif
Affichages : 84
Taille : 394,6 Ko

    Après une petite recherche sur le net j'ai trouvé 2 personnes ayant un problème qui semble similaire au mien (en tout cas avec un rendu foireux sous Linux mais nickel sous Windows) mais pas de solution proposée à part... passer sous Windows.

    Par ailleurs je suis très étonné de voir que ce problème est très peu mentionné et encore moins solutionné (ou alors je suis vraiment mauvais pour rechercher des infos sur le net).

    Si par hasard quelqu'un connait ce problème et a une solution, ça sauverait mon projet.

    Merci à vous de m'avoir au moins lu

  2. #2
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 1 770
    Points : 4 076
    Points
    4 076
    Billets dans le blog
    2
    Par défaut
    Salut je connais se problème et nous n'avons pas réussis à savoir d'ou il provenait avec les meshs. Pour construire ton mesh utilises tu TGLFreeForm ? Si non c'est celui-ci qu'il faut utiliser. Car Il y a cette erreur avec le TGLMultiPolygon.

    Autre chose au quel il faut faire attention, c'est la l'ordre hiérarchique de tes objets dans ta scene et egalemeent et l'option pour choisir la façon dont est géré l'arbre. Si je me souviens viens il y a une option (cull) dans la scene et dans le tglscene il y a une autre option (rendering des objet) que je ne me souviens plus.

    ...et encore moins solutionné
    Malheureusement pour la version de GLScene de Lazarus je suis tout seul. Et pour Delphi idem Pavel est tout seul. De plus depuis un moment pour des raisons professionnelles je ne code plus beaucoup en Pascal et Lazarus

    Je pense que oui, mais as tu posté et regardé dans le forum de GLScene sur SF ?

    A+
    Jérôme

    PS : peut tu me joindre un zip ici de ton projet test, j'essayerai de regarder dès que j'aurai un peu de temps devant moi.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Hello Jérôme

    Merci pour la réponse
    Dans mon projet j'ai commencé par utiliser le TGLFreeForm effectivement, puis je suis passé sur le TGLMesh. C'est sur ce dernier que j'ai le problème dans mon projet et dans le petit exemple que j'ai illustré avec le cube "mal coupé" par le triangle.
    J'avais l'impression d'avoir un autre souci avec le TGLFreeForm mais il faut que je teste à nouveau, comme je découvre le dév OpenGL et GLScene j'avance à tâtons et j'apprends petit à petit à me familiariser avec tout.

    Ci-joint le petit projet test avec le cube "mal coupé" qui est donc correctement rendu sous Windows mais pas sous Linux (je précise un peu mon env : ArchLinux, Lazarus 2.0.12, GLSceneLCL 2.0 et j'ai un GPU intégré Intel (mais j'ai le même souci sur mon autre machine avec GPU dédié AMD).
    TestCubeGLSceneLCL.zip

    Concernant l'ordre de création des objets, j'ai effectivement lu que c'était important. Mais j'avoue ne pas encore percevoir la logique : dans mon cas comment dois-je savoir si c'est mon cube ou mon triangle que je dois créer en 1er ? Et encore, là je ne parle que de mon test ultra simpliste
    Dans mon vrai projet où je lis un fichier 3D contenant un personnage, il ne semble pas y avoir de logique d'ordre des triangles (j'ai juste une liste de vertex, de normals, de couleurs et parfois des textures) - à part l'ordre naturel des informations dans le fichier bien sûr

    J'ai aussi essayé de jouer avec les différentes options, comme le DepthTest, le BlendingMode et le Cull. Il n'y a que le Cull qui a effectivement un effet mais mon modèle 3D était toujours bizarre. Je vais re-tester avec le TGLFreeForm comme tu me l'as conseillé.

    Malheureusement pour la version de GLScene de Lazarus je suis tout seul. Et pour Delphi idem Pavel est tout seul. De plus depuis un moment pour des raisons professionnelles je ne code plus beaucoup en Pascal et Lazarus
    Juste pour être clair, je ne critique pas les dévs hein C'est juste que j'étais étonné qu'un débutant comme moi tombe sur ce problème et que peu de gens semblent y faire référence (ou alors je cherche mal sur le net...).

    Yes, j'avais regardé le forum de GLScene sur SF mais je n'ai pas trouvé de problème similaire au mien...

    Merci à toi pour ces explications

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je viens de mettre à jour mon projet de test en ajoutant un rendu avec FreeForm et j'ai le même problème :

    Sous Linux :
    Nom : linux2.gif
Affichages : 69
Taille : 374,0 Ko

    Sous Windows :
    Nom : windows2.gif
Affichages : 68
Taille : 184,6 Ko

    Le projet de test à jour :
    GLSceneLCL GLMesh vs GLFreeForm.zip

    C'est peut-être moi qui fais une grosse connerie, étant débutant. Mais j'avoue ne pas voir quoi...

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    3 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2002
    Messages : 3 085
    Points : 5 148
    Points
    5 148
    Par défaut
    salut

    peut etre un probleme de .so
    as tu la dernière version opengl ?
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Hello anapurna,
    Merci pour ton message.

    La commande glxinfo | grep "OpenGL version" me sort ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenGL version string: 4.6 (Compatibility Profile) Mesa 21.1.1
    C'est un sujet que je connais assez mal, je ne sais pas s'il y a des outils pour "diagnostiquer" tout ça (du genre savoir si OpenGL est à jour, correctement installé, etc.).

  7. #7
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 1 770
    Points : 4 076
    Points
    4 076
    Billets dans le blog
    2
    Par défaut
    Salut, j'ai été chercher dans le forum de GLScene et tu n'es pas le seul à avoir ce problème sur Linux. Effectivement, il apparait dans certaines distributions et pas dans d'autres.

    D'après ce que te renvois "glxinfo" c'est que l'opengl est géré via le driver "Mesa".

    Vérifies si tu as bien les paquets libgl1-mesa-dev et libglu1-mesa-dev d'installer. GLscene en à besoin sous linux pour fonctionner correctement. Si non, installes les et réessayes tes exemples.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    apt-get install libgl1-mesa-dev
    apt-get install libglu1-mesa-dev
    A+ Jérôme

    PS: Je n'ai pas eu le temps encore de tester tes exemples
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Salut Jérôme,

    Merci beaucoup pour ces infos, je vais regarder tout ça. Sous ma distrib je n'ai pas les mêmes noms de paquets, je vais chercher tout ça.
    Tu aurais le lien du post que tu as trouvé sur le forum ? Histoire que j'aille voir pourquoi je n'ai pas été foutu de le trouver.

    Encore merci pour le temps que tu accordes à ce topic

    A+

  9. #9
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    3 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2002
    Messages : 3 085
    Points : 5 148
    Points
    5 148
    Par défaut
    salut

    tout ceci ressemble a un probleme sur les partie caché


    il manquerait pas une instruction du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glEnable(GL_DEPTH_TEST)
    quelque part ?

    afin de forcer le calcul des parties cachées où il existe une ambiguïté
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Salut Anapurna,

    Yes, j'ai vérifié et ce paramètre est bien activé, sur tous les objets de ma scène.
    J'ai aussi essayé de fixer ça dans mon code (en plus du concepteur de l'interface) mais toujours pareil :/

Discussions similaires

  1. Problème de DLL WMI sous Windows 2000 pro
    Par manwax dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 11/03/2008, 15h32
  2. Problème d'execution c++ sous windows
    Par maxetime dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2006, 14h39
  3. problème fin de string sous windows 98
    Par LAPLACE dans le forum Windows
    Réponses: 1
    Dernier message: 07/03/2006, 11h09
  4. Problème de mon appli sous windows 2000
    Par chourmo dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2006, 12h03
  5. problème d'installation module sous windows
    Par Ickou dans le forum Modules
    Réponses: 2
    Dernier message: 21/10/2005, 16h32

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