Question

Selon le modèle standard, OpenGL est destiné aux applications professionnelles (CAD) et Direct3D, aux jeux.

Avec la débâcle d’openGL 3.0, openGl est-il toujours le choix naturel pour les applications 3D techniques (cad / GIS)?
Existe-t-il des bibliothèques de scénégraphes pour Direct3D?

(Bien entendu, Direct3D est uniquement sous Windows.)

Était-ce utile?

La solution

D3D vous oblige à payer la "stratégie de stratégie" de Microsoft. " En d'autres termes, D3D sert deux maîtres. On vous donne des fonctionnalités et des performances. L’autre consiste à s’assurer du respect des autres produits MS et de la plate-forme Windows en général. Cela a des conséquences pour vous:

  1. Une application D3D ne s'exécutera que sur Windows (y compris la Xbox). Peut-être que vous ne pensez pas que c'est important maintenant. Mais si, par la suite, vous souhaitez utiliser Mac, Linux, PS3, les futures consoles, etc., vous serez peut-être content d'avoir choisi le choix indépendant de la plate-forme.

  2. MS peut prendre des décisions arbitraires. La prochaine version de D3D ne fonctionnera-t-elle que sur un système d'exploitation nécessitant un nouveau matériel, coûtant cher et sur laquelle de nombreuses personnes ne souhaitent pas effectuer la mise à niveau? Prendront-ils une décision future avec laquelle vous n'êtes pas d'accord?

  3. Historiquement, OpenGL a conduit D3D à exposer rapidement de nouvelles fonctionnalités matérielles. En effet, il existe dans la norme un mécanisme permettant aux fournisseurs d’ajouter leurs propres extensions et de les replier dans la spécification principale. D3D est ce que MS souhaite, avec la participation des fournisseurs, mais MS obtient le droit de veto. Vous pourriez facilement vous retrouver dans une situation semblable à celle de Vista, où MS a décidé de ne pas exposer les nouvelles fonctionnalités matérielles à l'ancien DX et de ne rendre le nouveau DX disponible que sous Vista. C’était un casse-tête pour les développeurs de jeux.

Maintenant, c’est l’essentiel des raisons pour lesquelles une "application professionnelle" (CAO, animation, visualisation scientifique, SIG, etc.) favoriseraient OGL - de telles applications veulent rester stables pendant de nombreuses années, nécessitent une maintenance et des améliorations continues, et souhaitent s'exécuter sur de nombreuses plates-formes. Ceci est en contraste avec les jeux, qui sont assez souvent sur une seule plate-forme, seront publiés mais ne seront généralement pas "maintenus". (il n'y aura probablement pas de version 2.0, une mise à jour pour un autre système d'exploitation d'ici trois ans, il n'est donc pas nécessaire de prendre en charge les anciens matériels, etc.) Les jeux exigent des performances maximales et ne doivent fonctionner que pendant une courte période de temps et sur un nombre fixe de plates-formes. S'ils doivent quand même cibler Windows et que D3D est un peu plus rapide, c'est peut-être le bon choix, car les conséquences négatives de D3D ne leur feront pas de mal, comme pour une application de CAO, par exemple.

Autres conseils

Comme toujours, cela dépend de votre situation.

D'après mon expérience, la qualité du pilote OpenGL sous Windows (2008) est bien inférieure à celle du pilote Direct3D. Si votre situation est telle que vous ne pouvez pas raisonnablement demander à vos clients de toujours disposer de pilotes mis à jour ou de leur demander de remplacer leurs cartes graphiques par des cartes dotées de meilleurs pilotes OpenGL, alors OpenGL est un très mauvais choix. Dans ce cas, je choisirais le moteur de rendu D3D sous Windows et le moteur de rendu OpenGL sous OS X / Linux (si vous devez prendre en charge ces plates-formes).

Avoir deux moteurs de rendu n’est pas aussi difficile ; D'après mon expérience, résoudre les problèmes de pilotes prend beaucoup plus de temps que d'écrire et de prendre en charge les chemins de code de rendu.

Bien sûr, il existe certaines situations (spécifiques) dans lesquelles D3D n’offre tout simplement pas les fonctionnalités nécessaires, par exemple. sortie genlockée à quatre tampons; ou support de géométrie sous Windows XP.

En bref, si vous voulez de meilleurs pilotes sous Windows, utilisez D3D. Si vous ne vous souciez pas beaucoup de la qualité du pilote, ou si vous avez besoin de fonctionnalités qui se trouvent dans OpenGL mais pas dans D3D, utilisez OpenGL.

Peut-être devriez-vous essayer une couche d'abstraction telle que OGRE , qui vous permet de basculer entre DirectX et OpenGL sans avoir réécrire quelque chose? Il ajoute également de nombreuses fonctionnalités et n’est pas orienté jeu, mais plutôt générique.

Cela ne répond pas directement à votre question (désolée), mais j'étais l'un des premiers à travailler sur Direct3D et hehe:

  

Existe-t-il des bibliothèques de scénégraphes pour   Direct3D?

Auparavant, Direct3D (nee Reality Lab) était simplement une bibliothèque de scénarios: -)

Dommage que le mode conservé Direct3D ne soit plus disponible ...

Direct3D est uniquement disponible sur Windows et XBox. Si vous envisagez de cibler Unix ou Mac, en plus de Windows, OpenGL est un bon choix.

Pour moi, parlant en tant que programmeur graphique dans une grande entreprise de CAO, il y a actuellement trois choses qui permettent à OpenGL d'être abandonné au profit de Direct3D (10/11) pour les applications de CAO / DCC existantes:

  1. Héritage . La plupart des logiciels de CAO sont plus ou moins à peine serrés à Concepts OpenGL. Tout réécrire autour de la philosophie D3D n'est pas toujours gérable (techniquement parlant et en fonction de la capacité / volonté du entreprise à y consacrer des ressources).

    Deuxièmement, cela pourrait avoir un effet négatif impacts si quelque chose se passe mal (fonctionnalité parlant et / ou performances) et la société ne prendrait simplement pas le risque de retarder une version majeure à cause d’un changement d’API et d’architecture.

  2. Les peuples . Les peuples dans ces industries de vieux garçon sont assez conservateurs. Ils préfèrent dépenser de l'argent / temps pour traiter IHV concernant tous les pilotes OpenGL problèmes qu’ils pourraient avoir ou ne recommanderaient tout simplement pas l’utilisation de graphiques provenant d’un IHV spécifique (par exemple, Intel ou ATI).

    De plus, je pense que les clients de l'industrie automobile / aérospatiale comme Boeing, Airbus, TMC, BMW, etc. ne vous souciez pas beaucoup d'avoir Quadros seulement poste de travail. Matériel est toujours bon marché en ce qui concerne les logiciels prix des licences.

  3. Tendances futures . Avec avenir génération de processeurs comme Llano, Larrabee, Fermi et des produits qui suivra, ça vaut vraiment la peine investir des budgets de R & D sur la manière de programmer et développer de nouvelles langages / apis / frameworks pour ces futurs matériels (en terme de graphiques ainsi que des tâches non graphiques).

    l'industrie de la CAO a d'énormes cycles et ne bougera pas si pas pour une technologie vraiment perturbatrice. Donc D3D pourrait juste arriver un peu en retard pour les gros joueurs de CAO (sauf Autodesk bien sûr qui est un cas particulier).

Ce n'est pas une réponse en tant que telle, mais il est intéressant de noter que les dernières versions d'AutoCAD vous donnent le choix d'utiliser des pilotes OpenGL ou Direct3D dans le fichier "3dconfig". option d'installation. AutoCAD étant fondamentalement une application Windows, il était donc logique qu’ils prennent (enfin) en charge Direct3D. Voir la page 15 de ce livre blanc d'AutoDesk pour plus d'informations. .

La réponse que tout le monde veut croire est OUI, mais la vraie réponse est que cela dépend.

Environ 50% du matériel disponible n’exécutera pas OpenGL à un niveau raisonnable. Pour voir un exemple, lisez la FAQ sur Google Sketchup qui utilise OpenGL

  

Les performances de SketchUp reposent largement sur le pilote de la carte graphique et sur sa capacité à prendre en charge OpenGL version 1.5 ou ultérieure. Historiquement, les utilisateurs ont constaté des problèmes avec les cartes ATI Radeon et les cartes Intel avec SketchUp. Nous ne recommandons pas d'utiliser ces cartes graphiques avec SketchUp pour le moment. ( Configuration matérielle et logicielle requise pour Google Sketchup

Ainsi, si vous écrivez une application de CAO et que cela ne vous dérange pas de le dire à vos clients, vous devez disposer d'une carte vidéo compatible OpenGL " alors la réponse est oui.

Si vous créez plutôt une application d'utilisateur final (Google Earth par exemple), la réponse triste est que vous devrez écrire les versions D3D et GL de votre application si vous souhaitez atteindre l'ensemble du marché.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top