begin process at 2008 07 06 12:54:17
1 205 545 membres
122 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EXEMPLE D'AFFICHAGE MULTIPLATEFORME D'UN TRIANGLE (DIRECTX ET OPENGL)


Information sur la source

Description

Cette étude personnelle est développée en C++. Les API DirectX et OpenGL sont utilisées. La source est compilable à la fois sur Windows (via Visual Studio 2005, ainsi DirectX ou OpenGL peut-être utilisé avec une gestion de la fenêtre grâce aux libs de windows) et sur d'autres plateforme (testé sur Linux : Ubuntu 7.10, ainsi OpenGL est utilisé avec une gestion de la fenêtre grâce à la lib GLUT). Je n'ai pas voulu utiliser SDL, ce qui permet de s'affranchir de programmes externes.
(FreeGLUT a été utilisé pour remplacer GLUT)

Il n'y a aucune modification à apporter au code pour compiler l'ensemble sur visual studio 2005 ou par g++.

Historique :

22-01-2008 ::: Création du projet OGL/DX multi-plateformes

Conclusion

Au final, on obtient un tas de #ifdef _WINDOWS... Ce qui est assez redondant mais nécessaire.
Un autre problème beaucoup plus embêtant est l'utilisation de GLUT. C'est une bibliothèque développée en C, ce qui pose donc quelques inconvénients quand à la modélisation du rendu sous forme de classes : glut nécessite de faire appel à des fonctions globales effectuant le rendu.
glutReshapeFunc(reshape);
glutDisplayFunc(draw);

Ces deux méthodes prennent une fonction en paramètre, et on ne peut les remplacer par des méthodes de classe. Il faut donc créer deux fonctions globales appelant les méthodes des diverses classes.

Je suis donc en train de réfléchir à une meilleur solution que GLUT pour le développement sous linux (ou d'autres plateformes).
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de luhtor le 22/01/2008 18:28:52

    Une question et une remarque.

    La question: Je me demandais quel est l'intérêt de gérer openGL et directX:
    - Si on faire un soft uniquement pour windows, alors autant faire que du DirectX.
    - Si on veut faire du portable, alors autant tout faire en OpenGL.
    Non ?

    La remarque: Ta méthode pour afficher un triangle est openGL est un peu dépassée.

  • signaler à un administrateur
    Commentaire de Zacks le 22/01/2008 18:41:15

    En fait, cette étude me sert de tests préliminaires pour le redéveloppement de mon moteur. A la base, il n'utilise que DirectX et ne fonctionne que sur Windows. J'ai envie d'intégrer OpenGL et de le rendre compilable multiplateforme, et ce sans utiliser SDL puisque SDL impose d'avoir une DLL en externe or mon moteur est aussi compilé sous la forme d'une bibliothèque dynamique.

    Il est donc intéressant de pouvoir utiliser à la fois DirectX et OpenGL, si ce n'est pour comparer les rendus, offrir ce choix à l'utilisateur. Comme ce que font pas mal d'applications vidéo-ludiques.

    Bref, vu qu'à la base je suis plutôt orienté DirectX, pourrais-tu me donner un lien pour observer la bonne méthode permettant d'afficher un triangle ? (VertexBuffers ?)

  • signaler à un administrateur
    Commentaire de luhtor le 22/01/2008 18:59:42

    "SDL impose d'avoir une DLL en externe or mon moteur est aussi compilé sous la forme d'une bibliothèque dynamique"
    => Avoir deux dlls, ne posent un pb particulier ?

    "si ce n'est pour comparer les rendus"
    => Les rendus sont censés être rigoureusement équivalent: la somme et le produit de deux nombres fera tjs le meme résultat sous DirectX ou OpenGL (heureusement) et comme la 3D, ca ne se résume qu'a ca...

    "la bonne méthode permettant d'afficher un triangle (VertexBuffers ?)"
    => Oui, il s'agit simplement d'utiliser le meme principe que DirectX.
    http://www.g-truc.net/article/vbo-fr.pdf

  • signaler à un administrateur
    Commentaire de Zacks le 22/01/2008 21:08:28

    Pour SDL, ça fait un truc de moins à distribuer et je suis un peu plus propriétaire du code comme ça, c'est juste une histoire de goûts. De plus, tout est installé par défaut normalement pour OpenGL et DirectX, quoiqu'il faut mettre à jour DirectX sur la machine cible suivant le SDK utilisé, c'est vrai. Le problème peut se poser pour GLUT sur Linux, mais sur la plupart des distributions il y a de quoi le gérer par défaut.
    Bref juste une histoire de goûts encore une fois.

    Je te remercie pour tes critiques, j'ai justement posté ces sources pour ça. Je cherche tout de même à garder une compatibilité OpenGL et DirectX sur Windows. Peut-être vais-je abandonner l'idée de compiler sous Linux, puisque des softs comme Wine gèrent très bien l'émulation windows. Je réfléchis donc à un bon compromis pour redévelopper mon moteur.

    Je te remercie de même pour le cours que tu m'as donné. Le problème avec le net, c'est qu'on trouve bien souvant de la documentation qui n'est plus à jour depuis pas mal de temps. Et la plupart des sites les plus connus proposent encore de développer avec OpenGL de la même manière que j'ai procédé. Je savais que le système de VB et IB existait aussi sur OGL mais je n'étais pas tombé sur de la bonne documentation à ce propos.

Ajouter un commentaire

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS