PDA

Voir la version complète : Avantages/Inconvenients


Mickael
20/04/2005, 20h36
Bonjour,
Je voudrais savoir les avantages et les inconvenients de DirectX/Opengl car je n'en connais que 3.

Les seuls que je connaisse sont :

Directx : Seulement sur windows,aucun portage possible.
OpenGL: Portage possible sur linux/mac
: Simple de programmer comparer a directx (moins de ligne aussi j'ai pu remarquerà

Merci de vos réponse !

Mickael

ZeBlueCow
20/04/2005, 20h53
autre différence notable que tu as omise : directx permet de gérer l'affichage, le son (dont musique dynamique), les controleurs (joystick, clavier, souris, retour de force, etc.) et le réseau tandis qu'opengl n'est qu'un moteur graphique (3D à priori, mais on peut très bien s'en servir pour faire de la 2D).

ok, c'est une évidence... mais c'est tjrs bon à rappeler :D !

=> Note plus générale : existe-t-il, ici ou ailleurs, un comparatif (si possible *neutre*) des différents framework/api pour développer des jeux ?

EDIT: au jeu des 7 différences, j'en ai encore une facile : directx est orienté objets tandis qu'opengl est orienté "fonctions".

Lenolian
20/04/2005, 22h04
OpenGL c'est un imbroglio d'extensions plus ou moins supportés par les cartes graphiques. DirectX fournit un niveau d'abstraction plus élevé et est de ce point de vue plus simple à programmer.

La version de DirectX pour le framework .Net est très bien foutu et simplifie énormément la programmation.

LaurentUSA
21/04/2005, 00h54
DirectX et OpenGl sont tous aussi compliques l'un que l'autre. Pour faire de la bonne programmation graphique avec le materiel actuel, on fait :

- Des vertex buffers sous DX et des Vertex Arrays ou des VBO avec GL.
- Des shaders avec DX ou des fragments avec GL.

GL ou DX, ce sont les memes idees et donc meme combat, meme complexite.

Ceux qui pretendent que GL est plus simple et qui n'ont jamais fait que du glVertex ou du glutSolidSphere sont totalement a cote de la plaque.

Luke
21/04/2005, 01h09
Sinon moi j'ajouterais juste au niveau de la facilité de programmation.

Personellement je trouve "l'esprit" plus claire et plus simple à coder qu'opengl. Donc moi je dirais que comme à brule pour point Dx est plus simple à coder. Enfin c'est un point de vue, si tu n'aimes pas trops la P.O.O il es probable que tu préferes opengl. Cependant tu peux aussi écrire une bonne surcouche objet pour opengl et faire du code tout a fait agréable.

J'opterais plutôt pour cette solution moi (ogl + surcouche)

Mickael
21/04/2005, 12h57
Ok mais niveau qualité graphique,OpenGL et DirectX ont les même feature ou l'un a plus de feature que l'autre ?

Lenolian
21/04/2005, 13h09
Ok mais niveau qualité graphique,OpenGL et DirectX ont les même feature ou l'un a plus de feature que l'autre ?

C'est la même chose.

Sinon un autre point pour DirectX : il est mis à jour très souvent, voir trop (environ tous les 2 mois).

Mickael
21/04/2005, 14h46
Ok merci pour toutes vos réponses

Mickael
21/04/2005, 16h33
Il n'est pas plus avantageux de programmer en opengl ?
Car opengl est portable,directx non (c'est dans les inconvenient de directx d'ailleur) .

Mokona
21/04/2005, 17h07
À toi de voir si la portabilité fait partie de tes impératifs.

ZeBlueCow
21/04/2005, 20h02
- DirectX a été développé par Microsoft, OpenGL par des anciens du MIT.
- En pratique, ça veut dire :
* l'appel à une fonction (méthode) DirectX nécessite 80 paramètres dont 75 sont des structures de 25 champs dont 2 seulement t'interressent mais t'es qd même obligé de remplir les 23 autres (sans parler du paramètre que pour l'instant il faut mettre à 0 parce qu'il pourrait *peut-être* servir à quelque chose dans une prochaine version - ce qui est de fait faux puisque qd microsoft change qlq chose, microsoft change tout et rajoute un "ex" à la fin du nom de la nouvelle fonction...)
* les fonctions OpenGL prennent 3 paramètres à tout casser et, en règle générale, c'est plutôt 1 que 2.
* l'esprit OpenGL c'est : toutes les variables utilisées ont des valeurs par défaut. Le programmeur ne modifie que ce dont il a besoin, en connaissance de cause.
* l'esprit DirectX c'est : oui, il faut initialiser cette structure de 80 champs et, oui, ce serait en effet sympa de vérifier tout les cas d'erreur possible sans quoi c'est pas très consistant tout ça merci. Vive la couche d'abstraction.

Voilà, c'était mon apport neutre & objectif :D

ps. j'ai oublié de parler des extensions OGL, ha bon ?

Joker-eph
28/04/2005, 19h45
* l'esprit OpenGL c'est : toutes les variables utilisées ont des valeurs par défaut. Le programmeur ne modifie que ce dont il a besoin, en connaissance de cause.


OGL c'est du C nan ? on peut mettre des valeurs par défault aux arguments en C ?

GothikSoft
28/04/2005, 19h52
ZeBlueCow : Dis moi on est pas la pour faire la gueguerre contre Microsoft. Expliquer les defauts de DirectX et les avantages de OpenGL c'est tres facile comme resonnement. On peut d'ailleur faire de meme dans l'autre sens mais ce n'est pas le but de la discussion.

Joker-eph
28/04/2005, 19h58
ZeBlueCow : Dis moi on est pas la pour faire la gueguerre contre Microsoft.


Ah bon ? :00000023:


Ok je sors :p

ZeBlueCow
29/04/2005, 10h24
Dis moi on est pas la pour faire la gueguerre contre Microsoft.

Je ne fais pas de gueguerre contre Microsoft. Je ne fais que donner un avis sur l'expérience que j'ai eu de DirectX et d'OpenGL. C'est effectivement complètement subjectif (encore heureux, tiens!).

Côté Microsoft, je suis un fan de Visual Studio (modèle d'érgonomie, relativement léger/rapide, pas de bug) et de leur compilo (l'optimisation est incroyable / à mon avis sans concurrent de même réputation). Maintenant, les SDK/API/framework Microsoft (win32, MFC, DirectX, sans parler des COM et autres ActiveX) sont de véritables usines à gaz et tjrs assez ch***t à programmer.

Expliquer les defauts de DirectX et les avantages de OpenGL c'est tres facile comme resonnement. On peut d'ailleur faire de meme dans l'autre sens mais ce n'est pas le but de la discussion

Là ça m'interresse. Après tout, si je veux connaitre les "features" de DirectX ou OpenGL, je n'ai qu'à aller sur les sites... Ce qui est vraiment interressant c'est de connaître les expériences effectives de ceux qui utilisent ces deux technos. Bien sûr, ça n'a pas à se terminer en bataille rangée. A chacun d'expliquer ce qu'il pense, aux autres de retenir ce qui les interressent !

Lenolian
29/04/2005, 10h53
Maintenant, les SDK/API/framework Microsoft (win32, MFC, DirectX, sans parler des COM et autres ActiveX) sont de véritables usines à gaz et tjrs assez ch***t à programmer.

C'est pour çà qu'il y a .Net, plus de COM, MFC et autres "merdes", plus de "dll hell".... franchement on peut critiquer microsoft sur certaines de leurs stratégies mais il faut bien avouer que l'environnement .Net a beaucoup simplifié le dévélopement d'applications.

De toute façon la "guerre" DirectX/OpenGL n'en finira jamais. C'est deux visions complètement différente de la programmation graphique, l'une orientée objet, l'autre pas.
L'une portable, l'autre pas. Mais au final le résultat est il faut bien l'avoué exactement le même. Ce n'est pas l'API qui va faire un bon jeux, c'est le programmeur qui va utiliser l'API qui va faire la différence.

Il n'y a pas de meilleures API juste deux philosophies de programation différente qui conduise au même résultat. A chaque programmeur de voir laquelle lui convient le mieux... On peut lister à l'infini les avantages et inconvénients de chaque API, on verra qu'au final le tout s'équilibre.

En résumé, teste chaque API et regarde laquelle te convient le mieux mais surtout ne pas partir avec un a-priori.

Mad-Math
23/05/2005, 00h29
personne n'aurai 2 images identiques d'une scene super balèze, une en Dx l'autre en OpenGL pour pouvoir comparer ?

Lenolian
23/05/2005, 09h04
Le résultat serait exactement le même, il depend uniquement de la carte graphique et de ses possibilités.

En gros, les cartes graphiques n'acceptent les données que sous un certain format. DirectX et OpenGL se charge de les envoyer d'une manière spécifique à chacun, mais aux final les données sont les mêmes. Une texture en mémoire vidéo qu'elle est été crée via DirectX ou OpenGL, c'est exactement la même chose.

Après il y a ceux qui préfèrent l'un ou l'autre des APIs, chacun fait ce qu'il veut. Mais c'est stupide de vouloir les comparer en termes de performances. Au pire on peut exprimer certains faits, l'un est propriétaire l'autre pas, l'un est orienté objet l'autre pas... mais pas les comparer puisqu'au final, encore une fois, c'est exactement identique.