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 :

OpenGL ou Java3D


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 36
    Par défaut Définition des JOGL Capacities
    Bonjour, j'ai fait un site internet pour expliquer mon projet, c'est une application 3D qui marche avec Java3D.

    Pour plus d'informations: http://ObjMod3D.free.fr.

    Cependant, j'avais commencé la programmation avec JOGL et j'avais eu des problèmes de performances.

    Je voulais savoir lequel de JOGL et Java3D etait le plus rapide.

    Si vous êtes interressé par ces questions, regardez les posts suivants, sinon allez directement à la fin pour voir les posts relatifs auxcapacitées et propriétes des contexts GL.

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    les deux sont completement differents :
    - Java3D est un scene graph complet
    - JOGL est l'implementation Java d'une API bas niveau

    l'aventage de Java3D c'est que tu va avoir tous les mecanismes de bases déjà implementés. L'inconvenient, c'est que c'est basé a la fois sur OpenGL et Direct3D, donc tu n'a que le plus petit denominateur commun entre les 2 API.

    L'aventage de JOGL, c'est que tu peut faire ce que tu veut, donc avec un peut d'huile de coude, tu pourra peut être (selon ton niveau technique) atteindre des perf superieurs à Java3D. Le problème, c'est que c'est beaucoup plus de boulot et que ca necessite beaucoup plus de connaissances.
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Par défaut
    Hello,

    Alors tout dépends de ton niveau.
    Si tu recherches de la performance, il vaut mieux t'orienter vers la librairie JOGL. Cependant, si tu recherche quelque chose de plus simple et aussi de plus rapide à mettre en oeuvre, Java3D sera ton ami.
    Ce dernier est un bon compromis entre performance et facilité.
    Enfin, tu auras beaucoup plus de liberté avec la librairie JOGL.

    Tu n'atteindra pas les performances d'un programme fait avec OpenGL et c++ mais avec les machines actuelles, elles sont tout de même très bonnes.
    D'ailleurs, des jeux créés à l'aide des librairies JOGL ou LWJGL ont vu le jour, ce qui signifie que si tu as eu des problèmes de performance avec ton application, c'est que le code n'était pas très optimisé

    J'espère que cet avis t'aidera dans ton choix.
    A bientôt

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    entre Direct3D et OpenGL, il faut les considérer comme etant identique d'un point de vue performance car ce sont deux API bas niveau. (bon en fait, le truc, c'est que les perf des deux API vont dependre de pleins de facteurs impossible a prendre tous en compte : la carte 3D, les drivers, ta propre competencedans chaque API...) en plus, je n'ai jamais vu de binding D3D pure pour Java

    sinon, Java 3D, c'est très differents : tu a un moteur généraliste optimisé pour ça, donc a priori, si tu est débutant en prog 3D, ce sera meilleurs que ce que tu peut faire par toi même avec OGL ou D3D. Par contre, si tu a de bonnes comptetences en 3D, tu pourra faire ton propre moteur optimisé pour ce que tu souhaite faire et qui ira plus vite que Java3D... mais ca demande infiniment plus de boulot
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  5. #5
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Salut,

    Citation Envoyé par javator
    Je vais cibler un peu plus ce sujet en demandant maintenant quelles différences il y a entre OpenGL et JOGL.
    En gros, il n'y en a "fondamentalement" pas.
    JOGL est un binding java pour OpenGL, il fait juste le lien entre Java et OpenGL.
    Le "fondamentalement", c'est juste pour souligner le fait que les dernières releases (notées JSR-231) intègrent quelques méthodes et objets supplémentaires n'existant pas en OpenGL pur et qui enrichissent le binding.


    Citation Envoyé par javator
    Quand j'ai programmé en JOGL, je n'ai pût avoir que l' implémentation de GLAutoDrawable, alors qu'en OpenGL, je n'ai que le context Drawable.

    Comme vu ci dessus dans mon site, je préfère appeler moi-même mon rafraichissement, donc je préfère à-priori le GLDrawable.
    J'ai les deux, GLAutoDrawable et GLDrawable... tu utilises quelle version?

    Citation Envoyé par javator
    Quelle est l'utilité du GLAutoDrawable face à GLDrawable?
    Début de réponse, mais je suis loin d'être un spécialiste...
    GLAutoDrawable étend GLDrawable, tu y trouveras donc tout ce que tu as dans GLDrawable plus... des trucs en plus! (d'après ce que je comprends de la javadoc, ça crée son contexte OpenGL et on peut y brancher un écouteur d'évènement...).
    Je laisse les spécialistes répondrent plus en détails, j'en suis encore à migrer mon appli vers la JSR231

    Citation Envoyé par javator
    Et quels sont les points attractifs et contraignants de la librairie JOGL(add-on) face à OpenGL.
    Là, je ne comprends pas trop la question... JOGL sert à faire de l'OpenGL avec Java... donc tu ne peux pas trop les comparer. Ou alors on compare OpenGL/Java avec OpenGL/autre chose...


    Citation Envoyé par javator
    Si d'autres personnes ont des exemples pour illustrer ce choix difficile !
    Là, je te conseille de basculer sur le forum 3D Java si tu veux toucher plus de spécialistes JOGL... et Java3D
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par javator
    PS: Est-ce que quelqu'un connait une javadoc en français de JOGL.
    Normalement, ça n'existe pas... il y a assez peu de javadocs traduites, partant du principe que l'anglais est plus ou moins universel en programmation...

    Pour ton problème de rapidité, essaye d'améliorer ton algo de rendu. Ce n'est pas normal que tu aies une grosse différence de rendu entre Java3D et JOGL pour une scène "simple".
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    une bonne alternative pour ton projet pourrait être jMonkeyEngine.
    C'est un moteur 3D pour Java basé sur OpenGL.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  8. #8
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Je vais me répéter, mais tu pourrais avoir des réponses plus rapides...

    Citation Envoyé par plegat Voir le message
    Là, je te conseille de basculer sur le forum 3D Java si tu veux toucher plus de spécialistes JOGL... et Java3D
    Pour ton programme qui doit faire des dégradés de bleu, je n'ai pas tout compris à ton code (je trouve ça un peu... fouillis...).
    En prenant comme base le premier tuto de chez Nehe, et en rajoutant un timer, ça donne le fichier que je te mets en pièce jointe.

    Jète un oeil au site de Nehe, tu as tout un tas de leçons qui ont leur version JOGL. Ca te permettra de partir sur de bonnes bases (attention, il y en a qui tournent avec l'ancienne version de JOGL... faut adapter un peu pour la version JSR).
    Fichiers attachés Fichiers attachés
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  9. #9
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par javator Voir le message
    1ERE QUESTION: Pour la rapidité du programme, est ce que je devrais plutôt déclarer la classe GLRendererEngine private, public et protected ou static sachant que le tableau d'Object ne sera pas modifié très souvent.
    Euh... je ne vois pas trop où ceci aurait une influence sur la rapidité de ton programme... La rapidité sera plus influencée par la structure de tes objets, et par ton algorithme d'affichage des objets OpenGL...


    Citation Envoyé par javator Voir le message
    J'avais donc essayé d'étendre ces deux classes, GLDrawEngine extends DrawEngine, ainsi j'appelle les méthodes appropriées au contexte d'affichage, mais je trouve cette manière un peu lourde.
    Je ne peux pas te dire, je n'ai pas compris ce que tu fais exactement...


    Citation Envoyé par javator Voir le message
    2EME QUESTION:
    J'aimerais donc savoir s'il y a un moyen plus explicite en terme de lecture d'effectuer ce choix, ou s'il y a une astuce d'effectuer cette opération grâce à l'absence d'une déclaration d'une de ces instances.
    Tu te crées une interface, par exemple IRenderEngine, avec toutes les méthodes et propriétés qui seront utilisées par ton programme. Toutes...

    Tu crées deux classes qui implémentent cette interface, JOGLRenderEngine et J3DRenderEngine. Tu mettras donc dedans les méthodes et propriétés définies dans l'interface, plus éventuellement d'autres (qui peuvent alors être en private, vu qu'elles ne seront pas appelées par le programme... sinon, à mettre dans l'interface).

    Dans ton programme, tu te crées ton objet graphique soit en JOGL, soit en J3D en fonction du besoin (déclaré avec le nom de l'interface, et initialisé avec le nom de la classe, ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IRenderEngine render=new JOGLRenderEngine(...)
    )


    Mais là, on fait du Java... faudrait penser à changer de forum...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/12/2012, 09h34
  2. Réponses: 2
    Dernier message: 13/02/2012, 14h31
  3. OpenGL ou DirectX
    Par Nadir dans le forum DirectX
    Réponses: 6
    Dernier message: 02/05/2002, 12h48
  4. Opengl -- Les surfaces
    Par Anonymous dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/05/2002, 10h14

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