Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

L'usage de DirectX peut-il avoir sa pertinence pour les jeux indépendants ?

Le , par c.aug

0PARTAGES

0  10 
Dans les jeux faits avec peu de moyens, je vois une nette préférence pour OpenGL, ce qui me semble normal parce qu'on va cibler plutôt les smartphoned que le marché du CD-ROM.

Donc à priori, DirectX c'est plutôt pour l'AAA, OpenGL plutôt pour les jeux de série B.

Enfin du moins c'est ce qui semble le plus évident à priori, enfin si on a en référence un Angry Birds. Maintenant si on part du cadre « amateur », enfin disons qu'on part des moyens d'un Notch, c'est-à-dire de zéro, donc qu'on n'est pas assez riche pour s'offrir trois ou quatre portages, les licences de diffusion qui vont avec, les développeurs spécialistes de chaque OS, ainsi que les douze machines de test, bref envisager sérieusement de faire du jeu smartphone s'il n'y a pas une société avec des moyens derrière c'est impensable.

Donc dans ce cadre là, et après avoir exclu les solutions type Java/middleware, tout ce qu'il te reste c'est de cibler Windows.
Et là donc je ne sais pas si OpenGL est encore un choix judicieux.

Même si OpenGL est plus facile d'utilisation, à chaque ligne de code tapée j'ai peur de tomber sur l'interminable liste des trucs d'OpenGL qui foirent sur Windows. Alors qu'au moins avec les trucs de Microsoft, même si la doc est indigeste, on sait qu'on est en terrain ami, c'est plein d'outils qui marchent bien dans Windows, et donc à priori le code tapé cause beaucoup moins de risques de planter le GPU.

Voilà donc après avoir tenu compte de ces détails techniques, je sais pas si OpenGL c'est un choix intelligent dans un cadre où on risque guère de sortir de Windows.

Qu'en pensez-vous ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de moldavi
Membre expert https://www.developpez.com
Le 27/04/2013 à 0:21
Bonjour.

DirectX ou OpenGL, le choix est plutôt simple.

Si tu souhaites faire un programme multi-plateforme, sans écrire 36 versions de ton programme (Windows, Linux, Apple, Console), alors c'est OpenGL.

Si ton programme est uniquement destiné à Windows, alors c'est DirectX. Mais même dans ce cas là, tu pourrais choisir OpenGL, tout simplement parce que tu es plus à l'aise avec cette API.

Il faut jauger les avantages/inconvénients, selon le projet.

Mon choix personnel, c'est DirectX, HLSL, Visual Studio, Cuda pour le multi GPU (je n'ai que des cartes NVidia).

Pourquoi ce choix ?

Il y a plein de raisons mais j'abrège :

je considère qu'être expert dans toutes ces technologies est hors de portée d'un cerveau humain. Ce qui m'intéresse, ce n'est pas de bidouiller 50 frameworks, c'est d'en maîtriser 1. Chacun sa philosophie.

J'admire les développeurs qui font du multi-plateforme, mais je les plains tellement ils doivent s'arracher les cheveux. Et les standards ny changent rien : chaque OS a ses spécificités, et adapter le standard relève souvent de la bidouille (contre-performant donc). Il n'y a quà voir les navigateurs, malgré les standards, les développeurs web s'arrachent les cheveux. Leurs pages web ne s'affichent pas de la même façon selon le navigateurs. Bidouille sur bidouille pour que ce soit correct.

Ce n'est pas ma conception de l'informatique. Déjà que même en me basant sur un seul OS/Framework, je suis parfois obligé de bidouiller...

Bref j'ai fait mon choix. A toi de faire le tien.
4  1 
Avatar de moldavi
Membre expert https://www.developpez.com
Le 27/04/2013 à 1:31
Re.

Citation Envoyé par c.aug Voir le message

parce que la lib directx qui change tout le temps, qu'il faut tout le temps réapprendre
DirectX9 c'est 2002, DirectX10 c'est 2006 et DirectX11 c'est 2009. Trois changement en 7 ans.

La lib DirectX change tout le temps, hum...
3  0 
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 27/04/2013 à 13:06
Déjà, les fenêtres (sous Windows) n'ont pas nécessairement de vsync : http://stackoverflow.com/questions/3...d-windowed-app
De deux, la moitié des réponses Google sur la vsync sont liés au logiciel du pilote vidéo (oui, on peut forcer la désactivation de la vsync dans l'utilitaire de NVIDIA, AMD et d'Intel).
Après, bien sur on peut activer ou la désactiver dans le programme lors de l'initialisation du contexte (la configurer surement aussi).
Pour ce qui d'OpenGL c'est ici : http://www.opengl.org/wiki/Swap_Interval

Ce que je voulais dire, le fait d'attendre le faisceau et tout le tralala, ce n'est pas le développeur qui fait quoi que ce soit (comme au temps des jeux en ASM). Maintenant, il y a juste un flag à changer et on est pratiquement bon (pour peu que la gameloop soit efficace).
3  0 
Avatar de stardeath
Expert confirmé https://www.developpez.com
Le 04/05/2013 à 2:01
mon avis ne peut pas être 100% neutre, j'ai forcément soit utilisé des termes péjoratifs contre l'un ou contre l'autre, voir oublié des éléments à charge.

il y a tellement de question à répondre pour le choix d'une api par rapport à l'autre que l'on prend forcément des biais pour conseiller et/ou choisir :

- langage de programmation
- plutôt c ou plutôt objet
- débutant total ou expérimenté
- plateforme de destination
- ide
- possibilité d'accès au net pour avoir des renseignements/poser des questions
- formats des assets
- cg de test, machine de test, machine cible, os cible
- connaissance d'autres technos (exemple flagrant, si on connait déjà com)
- pourquoi ne pas utiliser un moteur 3D déjà cross techno
etc. etc.

l'idéal pour moi étant de tester les 2, j'ai eu la chance d'avoir eut des cours et le temps de tester les 2 technos, j'ai pu donc choisir selon mes gouts personnels mais cela n'engage que moi.
3  0 
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 27/04/2013 à 9:48
Bonjour,

Je trouve certains propos assez étonnant.
J'aimerai bien avoir le paragraphe de la documentation qui dit que le vsync OpenGL est bancal. Surtout que maintenant on utilise tous du double buffering, qui est implémenté par défaut partout, alors qu'il y a 20 ans, ce n'était pas le cas.
Un jeu pro, qui ne souffre aucun problème avec OpenGL ? -> Unreal Tournament 2004.

Le plus drole pour le vsync, c'est que sous Windows, ce n'est pas le programmeur qui le gère . Il est activé de base, l'application est calé sur 60 FPS et c'est tout. Après, si le programme n'est pas capable de gérer les deltatime et autre ralentissement (ou alors désactivation du vsync), on y peut rien, c'est la faute du programmeur, mais pour le vsync, ce n'est pas lui.

Actuellement, l'état d'OpenGL a vraiment été amélioré. Oui, il y a quelques temps (cela se compte en années), le support d'OpenGL était cramoisi, mais il y a une belle amélioration de la chose, tout de même. Il suffit d'avoir ses pilotes à jour. Bon, malgré cela, il arrive que AMD ne fasse pas toujours un support parfait, mais bon c'est aussi en voie d'amélioration.

Aussi, pour l'histoire des version de DirectX, il y a eu exactement la même évolution dans OpenGL : suppression du pipeline fixe. Oui, il a fallu, peut être deux ans pour que les programmeurs de moteur s'y habitue, mais maintenant, tous les monde fait du DirectX 11/OpenGL 4 (dans les jeux pros je parle), sans que cela gêne personne. Les moteurs sont codés, la réimplémentation est effectuée (DirectX 9 + DirectX 11) et donc, cela est bien géré.

On développera toujours DirectX9 aussi, pour la XBox 360, il ne faut pas l'oublier (même si c'est un peu spécifique).

Pour les programmes multiplateforme, c'est logiquement un choix de développement qu'il faut faire avant de commencer le projet. Plus précisément, il faut juste créer une interface sur les fonctions de bases, afin de permettre une réimplémentation native facilement sans que cela casse le reste du programme.

Un jeu que tu as développé il y a 5 ans en DirectX9, tu vas le mettre à jour en DirectX11 pour faire les choses bien, et gagner 5 FPS.
Ou plus intelligement, gagner en feature (geometry shader/tesselation shader/compute shader). Il y a tout de même une évolution entre les différentes versions et cette évolution est visuelle aussi.
3  1 
Avatar de shenron666
Expert confirmé https://www.developpez.com
Le 03/05/2013 à 9:31
Citation Envoyé par c.aug Voir le message
Donc à priori, DirectX c'est plutôt pour l'AAA, OpenGL plutôt pour les jeux de série B.
à priori = idée reçue
vas faire de l'opengl sous linux ou sur console autre que microsoft

Citation Envoyé par c.aug Voir le message
au moins avec les trucs de Microsoft, même si la doc est indigeste, on sait qu'on est en terrain ami, c'est plein d'outils qui marchent bien dans Windows
t'inquiètes, il y a aussi plein d'outils qui ne marchent pas comme il faudrait

Citation Envoyé par c.aug Voir le message
Voilà donc après avoir tenu compte de ces détails techniques, je sais pas si OpenGL c'est un choix intelligent dans un cadre où on risque guère de sortir de Windows.
directx n'est pas un choix intelligent, c'est un choix de simplicité et de restriction de plateforme
opengl est un choix intelligent, lui au moins est portable, et très utilisé dans le monde professionnel
après si tu te limite à windows... libre à toi, question de goût
Citation Envoyé par c.aug Voir le message
Bon mais, le truc, avec les jeux OpenGL sur Windows j'ai toujours eu plein de bugs de carte vidéo (doom3 qui crashe le GPU toutes les 5 minutes, angry birds qui me crashe carrément la machine deux fois avant de réussir à se lancer). Parce que les fabricants de drivers GPU pour Windows ont tendance à négliger la compatibilité OpenGL pour des raisons d'économie.
bizarre, doom3 ne m'a jamais crashé un GPU
quand à angry birds, je ne vois pas le rapport avec opengl...

Citation Envoyé par c.aug Voir le message
Exemple concret de fonctionnalité à problème, la synchro verticale, un truc qui me parait indispensable pour faire un jeu propre, dans la doc de OpenGL ils disent "attention c'est pas fiable on sait pas du tout sur quelle machine ça va planter", résultat dans les jeux OpenGL pour windows comme quake3 ou angry birds ils ont viré la vsync et on a un rendu moche avec du tearing.
elle date de quand ta doc opengl ?
quake3 avec le vsync marche parfaitement

Citation Envoyé par c.aug Voir le message
En France j'ai l'impression que les devs plébiscitent OpenGL.
tiens, j'avais pas remarqué
tu as vu ça ou ?
les jeux opengl en dehors d'id software ne sont pas légion
la plupart des moteurs (source, unreal) sont opengl + directx

Citation Envoyé par c.aug Voir le message
Donc si je raisonne en commercial je choisis OpenGL sans hésitation.
pourquoi ? opengl n'a rien de commercial
Citation Envoyé par c.aug Voir le message
C'est pas fluide 30 fps c'est de la vitesse de dessin animé, l'oeil perçoit chaque image.
un dessin animé c'est 15 fps pour percevoir l'animation
30 fps c'est plus qu'assez pour la grande majorité de la population
peu de personnes sont capables de voir la différence entre 30 et 40 fps

Citation Envoyé par c.aug Voir le message
Un jeu vidéo fluide c'est impeccablement calé sur la vitesse de l'ecran là tu as vraiment l'illusion que les trucs bougent tout seul tu ne perçois plus les frames. Baisser le truc à 30 fps ça devrait être une option réservée aux épileptiques, et puis ça empêche pas de tracer le tout proprement avec de la vsync.
t'es pas sympa avec les epileptiques, tu dois pas connaitre la maladie pour en parler comme ça

Citation Envoyé par c.aug Voir le message
Je viens de l'époque ms-dos, même si le framerate atteignait rarement les 60 de l'ecran et était souvent baissé à 30 voir 15, ça n'existait pas les jeux sans vsync en ce temps, on ne savait pas ce que c'était du tearing, tout le monde faisait du boulot propre. Quand des jeux sans vsync sont apparu à l'époque de cette nouvelle génération de jeux conçus comme des applications windows qui traçaient dans le dibsection au lieu du backbuffer directdraw, on a pleuré haaa bouh haa mes yeux haa.
tu es sûr que tu viens de l'époque ms-dos ?
à l'époque des 386, on ignorait totalement la vitesse de la machine, on avait des jeux qui tournaient à 10fps sur certaines (wing commander)
le même jeu sur un 486 tournait à 40fps
quand au vsync off, ça existait sur certains jeux (epic de did)
3  1 
Avatar de stardeath
Expert confirmé https://www.developpez.com
Le 04/05/2013 à 1:20
Citation Envoyé par c.aug Voir le message
C'est marrant humainement comme expérience d'avoir un avis NEUTRE.
tes derniers posts n'étaient pas particulièrement neutre.

si tu veux être neutre, voilà je pense le propos :

- certes opengl est utilisé sur beaucoup de plateforme mais à chaque fois ce n'est soit pas la même version, ou pire la même variante. opengl 3 ou 4 selon l'opengl de pc "de bureau" et pire opengl es 1 ou 2 pour les terminaux mobiles, et des variantes plus ou moins exotiques pour les consoles de salon.

le support sur les os dépendent presque totalement des constructeurs de cg, khronos servant globalement de décoration et officiellement seul la spec complète est fournis.

la source de samples étant seulement la communauté, les constructeurs de cg sortant seulement une fois de temps en temps une démo.

api 2D/3D uniquement, le reste est à puiser dans des libs supplémentaires.

- directx, restreint aux os windows, 2 versions majeures pour cibler cette branche d'os, 9 et 11, plus les versions exotiques pour consoles. (attention, je ne parle pas de windows phone parce que je ne sais pas ce que ça utilise comme version de directx, à froid je dirai surement un dx11 en compatibilité 9)
api sous l'égide totale de microsoft, ne prenant pas en charge toutes les fonctionnalités des cartes graphiques mais seulement un pool plus ou moins commun.

support, je pense, assez poussé au cul par microsoft. pas de spec complète fournis.

grandes quantités de samples fournis ainsi que tuto, mais doc pas forcément très exhaustive ni très compréhensible.

api pas seulement 2D/3D, gestion des maths 3D ainsi que le chargement des textures, et un format (ou 2) mal documenté de modèles 3D, input utilisateur (dinput ou xinput), musique (xaudio) etc.
api plus ou moins cohérente, certains modules étant carrément abandonnés (dinput)

ce que j'en conclue, c'est que opengl ou directx, c'est surtout une question de préférence d'api (plutôt c en opengl et plutôt objet com en dx) et non plus en terme de fonctionnalités (opengl4 et dx11 c'est bonnet blanc et blanc bonnet)
et en tout cas certainement pas en portabilité, vu que dans les 2 cas, faudra se limiter sur les fonctionnalités pour avoir un code strictement identique.
2  0 
Avatar de moldavi
Membre expert https://www.developpez.com
Le 27/04/2013 à 2:47
Citation Envoyé par c.aug Voir le message
Ca dépend de ce que tu utilises utilisées dans directx9 en fait.

Certaines fonctions requièrent d'appeler du code spécifique à dx10 et dx11. Si le switch n'est pas assuré dans le programme, ça va réclamer le téléchargement de dx9.
Citation Envoyé par c.aug Voir le message
Ca va réclamer le téléchargement de dx9.
Bon là je comprends plus rien.

Un programme qui me demande le téléchargement de Dx9, je n'ai jamais connu.
1  0 
Avatar de erwanlb
Inactif https://www.developpez.com
Le 29/04/2013 à 12:13
Citation Envoyé par c.aug Voir le message
c'était la garantie de se faire lyncher par toute la presse spécialisée et couler le studio
Sans oublier la pendaison des salariés sur la place publique

Citation Envoyé par c.aug Voir le message

C'est pas fluide 30 fps c'est de la vitesse de dessin animé, l'oeil perçoit chaque image
T'es Terminator toi si tu vois chaque image...

Toc toc....Sarah Connor, créatrice de jeux vidéos à 30fps ? PAN..........
3  2 
Avatar de _MAID
Membre confirmé https://www.developpez.com
Le 29/04/2013 à 15:42
Citation Envoyé par eclesia Voir le message
C'est quoi ce topic truffé de préjugés ???
...puis....
Citation Envoyé par eclesia Voir le message
DirectX n'est pour moi meme pas une option pour faire de la 3D, limité a windows que je n'ai d'ailleur plus depuis quelque temps.
Hmmm, contradictoire ça, non ? (ou alors quelque chose m'a échappé)
2  1