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

C++ Discussion :

Portabilité Linux/Windows 2D/3D et répercussions sur le code


Sujet :

C++

  1. #1
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut Portabilité Linux/Windows 2D/3D et répercussions sur le code
    Bonjour

    Je suis actuellement en phase de prospection technologique pour une petite envie que j'aimerai concrétiser

    Cela consiste en un programme (qui a dit un jeu ? ) 2D, voir 3D, que j'aimerai beaucoup déployable en environnement Windows et Linux.

    J'ai bien lu que Qt et/ou SDL sont portables mais qu'en est il des perfs 2D ? Peut on aisément déplacer des, hum, unités sur une carte ?

    Pour ce qui est de la 3D, je pense fort à Open Gl. Est ce vraiment portable ? Cela évolue t il toujours ? Qu'en est il de ses performances par rapport à DirectX ?

    Au delà, quels sont les impacts de la portabilité sur l'architecture d'un programme C++ ? Y a t il des règles précises à respecter ?

    Pour info, je viens plus du monde Java mais j'avais du C++ à l'époque, je devrai pouvoir m'y remettre sans trop de mal (j'ai surtout bcp de volonté en fait lol).

    Allez, merci d'avance pour vos lumières !

    Cordialement,
    ZedroS
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  2. #2
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    J'aime pas les épinards... Mais alors pas du tout

  3. #3
    mat.M
    Invité(e)
    Par défaut
    J'ai bien lu que Qt et/ou SDL sont portables mais qu'en est il des perfs 2D ?
    Je suis en train de finaliser un jeu de stratégie développé nativement avec Direct X et j'ai tenté de le porter sous SDL et sous SDL lça rame énormément .
    Je me suis sans doute mal pris il ya peut-être des optimisations à faire mais pour démarrer SDL c'est pas mal et ça permet de construire quelque chose de bien et portable

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Pour ce qui est de la 3D, je pense fort à Open Gl. Est ce vraiment portable ? Cela évolue t il toujours ? Qu'en est il de ses performances par rapport à DirectX ?
    BOf c'est kif kif ..
    Les 2 se valent , Open GL est infiniment plus facile à programmer mais pas forcément toujours exploitable sous Windows ( problème de drivers ).
    Je pense que Direct X offre plus de fonctionnalités multimédias et avec Open GL on ne fait que des sorties graphiques.

    [/quote]

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Tu peux lire ça:
    http://www.developpez.net/forums/viewtopic.php?t=308761
    et parcourir les forum DirectX/OpenGL pour avoir des infos.

  6. #6
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Pour résumer, DirectX contient une tonne d'outils qui font pas mal de chose pour toi, mais c'est assez contraignant d'un autre côté, car il faut passer par leurs outils....
    OpenGL est très ouverts est aussi puissant que DirectX en terme de perf, et n'a pas de problèmes de drivers.... et est plus facile à prendre en main, par contre il n'y a pas ou peut d'outils intégré directement dedans, soit tu développes les tiens soit tu utilises la myriade d'outils qui existe.

  7. #7
    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
    OpenGL est bien portable, pas de souci. C'est plutôt au niveau du hardware que tu auras des problèmes, mais tant que tu n'utilises pas des extensions de derrière les fagots tu ne devrais avoir aucun problème.

    SDL est lent oui (utilise DirectX 5 sous Windows), ne permet pas d'avoir un rendu accéléré pour les opérations 2D de base (alpha-blending, rotations, ...), et encore moins de la 3D.

    DirectX est bien sûr à oublier pour un portage Linux.

    Qt c'est une bibliothèque d'interface graphique, elle sera certes portable mais il te faudra tout de même utiliser une API graphique (que tu pourras plus ou moins bien intégrer à ton interface Qt).

    Pour finir, je te conseillerais (si bien sûr le dev. graphique n'est pas ton principal but) d'utiliser des outils potables : Ogre, Irrlicht, ou plus récemment SxDL, qui marche sous Windows mais qui possède je crois un portage Linux.

  8. #8
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    C'est plutôt au niveau du hardware que tu auras des problèmes
    Non, faut utiliser les extensions, il n'y aura pas vraiment de problème, sauf que tout vient avec le temps dans le noyau OpenGL, et qu'il existe plein d’extensions pour toutes plateformes ensuite...

    Je dirais que ce n’est pas hardware (le hardware est toujours le même, l’interfaçage aussi) mais software (drivers ou autres comme pour Direct3D)...

    Et DirectX c'est super lourd à programmer et changer de version... et n'est pas portable en dehors de Windows....

    Perso, je déconseille QT à moins qu'il se soit bien amélioré... mais c'est vraiment pas le pied !

  9. #9
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Contrairement à ce que d'autres ont pu te dire, je te conseillerais dans un premier temps de choisir non pas une API optimisée pour tes besoins, mais plutôt l'appli qui te permet le plus simplement de produire quelquechose.

    Ainsi, et si tu programme avec ça en tête, en séparant bien affichage et moteur du jeu, tu vas pouvoir assez rapidement développer un proto de ce que tu veux faire, qui te permettra dans une premier temps de fixer tes idées (pas toujours facile pour un projet perso) et surtout de savoir ce dont tu as vraiment besoin comme fonctions/perfos graphiques. Alors, dans une seconde phase, tu auras une bonne base pour bencher les différentes API qui t'on été proposées jusqu'à présent.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  10. #10
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Citation Envoyé par Higestromm
    Hum, c'est vrai que c'est chouette, ca a un super rendu. Je vois mal pour l'instant comment il "fait" pour être portable mais bon (seule info trouvée :
    Crystal Space currently runs on GNU/Linux, general Unix, Windows, Windows NT, and MacOS/X. It can optionally use OpenGL (on all platforms), SDL (all SDL platforms), X11 (Unix or GNU/Linux) and SVGALIB (GNU/Linux). It can also optionally use assembler routines using NASM and MMX.
    )

    Toujours est il que je vais me renseigner plus avant, histoire de voir comment cela peut me servir. J'aimerai notamment voir si on peut également faire aisément de la 2D (pour une carte). Ca doit etre le cas ceci dit. Des retours d'expériences de cet outil à propos ?

    Les 2 se valent , Open GL est infiniment plus facile à programmer mais pas forcément toujours exploitable sous Windows ( problème de drivers ).
    Je pense que Direct X offre plus de fonctionnalités multimédias et avec Open GL on ne fait que des sorties graphiques.
    Cad que sous OpenGl faut gérer la souris, le clavier et le son séparément c'est ça ? Ceci dit, ca doit se faire aisément aussi en C++ nop ? De plus, je voudrais vraiment qqchose de portable. Les outils et plates formes propriétaires c'est pas trop mon truc...

    Tu peux lire ça:
    http://www.developpez.net/forums/viewtopic.php?t=308761
    et parcourir les forum DirectX/OpenGL pour avoir des infos.
    C'est déjà fait, mais j'avais des questions plus techniques du coup j'ai pas voulu m'inscruster sur le thread de tantto. M'enfin, chapeau bas pour l'aide tout en douceur que vous lui apportez. Ca m'a d'ailleurs donné le courage pour poster mes questions de newbe (sans parler que le projet derrière est également vague...).

    Qt c'est une bibliothèque d'interface graphique, elle sera certes portable mais il te faudra tout de même utiliser une API graphique (que tu pourras plus ou moins bien intégrer à ton interface Qt).
    Qt n'est elle pas déjà elle même une API graphique ? J'y perds un peu mon latin là De plus, Qt semblait avoir la cote dans le thread suivant :
    http://www.developpez.net/forums/viewtopic.php?t=295161 . Qu'en est il ?


    Contrairement à ce que d'autres ont pu te dire, je te conseillerais dans un premier temps de choisir non pas une API optimisée pour tes besoins, mais plutôt l'appli qui te permet le plus simplement de produire quelquechose.
    C'est vrai que produire qqchose est une première gageure... Ceci dit, tu conseilles quoi comme API simple ? As tu entendu parler de Crystal Space 3D (bien que la doc du site dise elle même que la courbe d'apprentissage est un poil longue...) ?

    Ainsi, et si tu programme avec ça en tête, en séparant bien affichage et moteur du jeu,
    C'était clairement un de mes objectifs (qqchose genre MVC grosso modo). A propos, on peut faire de l'UML puis passer en C++ avec quels logiciels sans licence payante (pour un dev amateur) ? J'ai des souvenirs de Rose/Visual C++ mais cela me semble très payant comme couple... De plus, étant donné mon inexpérience dans le domaine, j'vais surement me vautrer au début, donc autant me vautrer vite pour redémarrer ensuite sur de bonnes bases (un modèle MVC c'est pas si simple je pense...).

    En tout cas, un grand merci pour vos réponses !
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  11. #11
    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
    Qt permet de faire de la 2D dans certains de ses contrôles (tracer des points, des lignes, des cercles, des images, ...) mais clairement pas pour faire du temps-réel et encore moins des jeux. Ca reste de l'interface graphique.

    En général, les gens qui veulent faire du portable utilisent OpenGL (pour la 2D / 3D) + SDL (pour tout le reste). L'avantage de la SDL c'est qu'elle fait un peu de tout style DirectX, si tu veux la remplacer il faudra aller chercher plusieurs bibliothèques. Mais bon, faut voir si tu souhaites seulement faire du graphisme ou également gérer les inputs, le son, le reseau, etc...

    Pour ce qui est des moteurs 3D portables et libres, Crystal space ne me semble pas le plus utilisé. Il y a Irrlicht qui est souvent cité, mais personnellement j'ai un avis très négatif sur ce moteur. Il y a également Ogre qui est clairement le plus célèbre, mais c'est peut-être sortir l'artillerie lourde pour toi. Et je ne sais pas ce qu'il vaut niveau 2D.

    Ce que je te conseille : un framework / bibliothèque facile à prendre en main et qui gère tous les aspects multimedia, style kjApi ou SxDL.

    Au fait, tu peux donner quelques précisions sur ce que tu comptes développer ?

  12. #12
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Citation Envoyé par Loulou24
    Qt permet de faire de la 2D dans certains de ses contrôles (tracer des points, des lignes, des cercles, des images, ...) mais clairement pas pour faire du temps-réel et encore moins des jeux. Ca reste de l'interface graphique.
    D'accord. Merci de l'info

    En général, les gens qui veulent faire du portable utilisent OpenGL (pour la 2D / 3D) + SDL (pour tout le reste). L'avantage de la SDL c'est qu'elle fait un peu de tout style DirectX, si tu veux la remplacer il faudra aller chercher plusieurs bibliothèques. Mais bon, faut voir si tu souhaites seulement faire du graphisme ou également gérer les inputs, le son, le reseau, etc...
    Difficile à dire précisément pour le moment. Je pense dans un premier temps gérer souris/clavier/affichage, histoire de m'assurer que j'ai les bases, puis voir pour le réseau et enfin pour le son.

    Pour ce qui est des moteurs 3D portables et libres, Crystal space ne me semble pas le plus utilisé. Il y a Irrlicht qui est souvent cité, mais personnellement j'ai un avis très négatif sur ce moteur. Il y a également Ogre qui est clairement le plus célèbre, mais c'est peut-être sortir l'artillerie lourde pour toi. Et je ne sais pas ce qu'il vaut niveau 2D.

    Ce que je te conseille : un framework / bibliothèque facile à prendre en main et qui gère tous les aspects multimedia, style kjApi ou SxDL.

    Au fait, tu peux donner quelques précisions sur ce que tu comptes développer ?
    Ce que je compte développer... Pas facile facile, j'aime pas trop m'avancer tant que je n'ai pas du concret.

    Toujours est il que le principe est de faire un descendant d'Ascendancy, cad un jeu de gestion au niveau d'une galaxie (un peu dans le genre de Galactic Civilizations ou autre Imperium Galactica, même si j'ai pas forcément tout apprécié de ces jeux là). Il y aura bien sur un système de recherches, des planetes à coloniser et des petits vaisseaux à bouger (enfin, pour l'essentiel, y aura aussi des surprises ). De plus, coté utilisateur, j'aimerai donner une grande latitude de "paramétrage", avec des aspects gérés par défaut pour les débutants puis la possibilité de se pencher ensuite plus avant dessus, une fois qu'on est plus expérimenté.

    D'un coté plus pragmatique, j'aimerai afficher les systèmes solaires en 3D, avoir une carte générale (avec possibilité de zoomer puis de passer en vue 3D). Il y aura aussi bien sûr des écrans de gestion. Le tout étant multijoueur via réseau/internet (vu que je n'ai jamais abordé des questions d'IA en programmation pour le moment). Je manque aussi de base en réseau sous cet angle, mais je pensais me pencher sur ces questions plus tard (d'abord avoir un système graphique qui me plaise). De même, je me pose la question du stockage des données. J'ai l'habitude de manipuler des bases de données, au début je ne me posais donc pas de questions. Ceci dit, je ne suis plus sur que ce soit la meilleure solution (je me vois mal demander l'installation d'une base oracle à chaque fois moué ), je pense donc que des "bêtes" fichiers plats devraient convenir, même si c'est moins "convivial" côté code. M'enfin, ce n'est qu'une partie des questions que je me pose, mais si je pouvais déjà avancer pour l'affichage 2D/3D, ce serait du bonheur.

    EDIT : il s'agirait de tour par tour.

    Côté acquis, j'ai fait mes études dans l'informatique (bac +5) et j'ai déjà codé, mais plus en Java (en C++ aussi en fait mais sans me pencher sur les aspects abordés ici). Ce jeu est pour moi l'occasion de me faire une expérience de bout en bout, avec tout ce que ça implique de conception, choix techniques puis joies du codage (vraiment ! ). Je manque juste un peu de billes pour me lancer...

    Encore merci à vous tous !
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  13. #13
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Dernier ajout avant le dîner :

    SxDL et kjAPI, même si simples, ne sont pas portables, erf... Par contre Ogre l'est et a l'air bien cool ! Je vais me pencher sur ce petit dernier
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  14. #14
    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
    SxDL possède bien un portage Linux.
    Quant à la kjApi : "Linux version will be available soon".

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/03/2012, 15h54
  2. PyInstaller pour les nuls sur Linux, Windows et Mac OS
    Par rambc dans le forum Déploiement/Installation
    Réponses: 20
    Dernier message: 31/07/2010, 13h50
  3. Réponses: 5
    Dernier message: 23/12/2009, 11h31
  4. Réponses: 0
    Dernier message: 04/08/2009, 18h46
  5. Portabilité IHM Python : unix, linux, windows
    Par devl83 dans le forum GUI
    Réponses: 3
    Dernier message: 08/09/2006, 16h49

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