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).
 

Fichier Zip

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

Commentaires et avis

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

Discussions en rapport avec ce code source dans le forum

Linux questions facile [ par xarier ] -------------salut tout le monde comme vous savez tous opengl est multiplate form alors il existe des library qui le rend portable ma question et tout problème avec devc++ opengl windows [ par Dyr3e ] bonjour j'aimerai créer une application openGL sous windows mais compatible Linux, du coup je voudrais eviter les déclaration de windows qui Apprendre les sockets en C (multiplateforme) [ par nikoland ] Bonjour,J'aimerais apprendre la programmation des sockets en C. Auriez-vous quelques liens de référence à m'indiquer ?J'aimerais si possible des sourc Création d'un projet compilable sous windows et linux [ par BloP68 ] Salut a vous....Donc voila je vais exposer mon probleme : Dans le cadre d'un projet de cour je dois creer une appli (un client mail pour être plus pré Création du jeu DirectX ou/et OpenGL [ par nico1610 ] Bonjour à tous, je me présente, Je m'appel Nicolas alias "=SG-Pro= ergo" je fais (à ce titre) parti de l'exélente teams Stargate-Pro et nous sommes à Problèmes de Création de Threads Windows/Linux [ par LaKiks51 ] Bonjour Le but est de savoir combien de threads peuvent etre executer simultanément c'est à dire que j'ai un executable qui réalise une opération pe pb avec windows.h sous linux [ par mattpss ] Salut,Je suis actuellement en 2eme année de bts informatique. J'aimerais Executer un programme sous eclipse mais dans mon programme j'utilise la bibli Pour windows, les APIs mais pour LINUX c'est quoi? [ par ndubien ] Bonjour,Je me pose une question que je pense interressante :Sachant que les APIs sont spécifiques à Windows.Quel est l'équivalent d'une API pour Linu Dll sous Linux et Windows [ par alexatique ] Bonjour,Voilà, j'arrive à réaliser des dlls sous windows à l'aide de visual studio.J'arrive également à faire un programme qui appelle cette dll.Mais fond d'ecran windows en transparence d'une fenetre opengl [ par foxz ] Est-il possible d'avoir une fenetre openGl avec le fond windows en transparence. je crois que l'on peut typé une fenetre windows pour dire de ne pas


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.