Je vais de lire la quasi totalité des posts sur le sujet et je dois bien avouez que certains d'entre eux m'ont fait dresser les cheveux sur la tête.
La première chose que je voulais dire est que si, dans le SDK de DirectX, les samples en C# sont peu nombreux par rapport aux samples en C++ ce n'est absolument pas parceque le C#/DX permet de faire moins de chose. Le problème est simplement que Microsoft utilise dans ses samples en C# MDX qui est une librairie carrement obsolète (d'ailleurs remplacée par XNA maintenant) et qui ne presente pour eux aucun intérêt tant marketing que technologique. Voilà pour l'explication. Par contre ce qui est sur c'est que je ne connais aucune technique de rendu ou autres qui soit faisable en c++ et pas en c#.
Ensuite XNA est pas mort du tout . C'est plutôt l'inverse. La version 2 est sortie et des jeux utilisant cette techno sont de plus en plus nombreux...
Ensuite la question de performance. Il est certain que ce qui mettait (et met) le C++ au devant de la scène dans la 3D temps réel s'était les perfs. Il y a quelques années il y avait C++ et les autres. Aujourd'hui, il n'est plus aussi dominateur sur ce point... Les performances du C# sont vraiment excellentes. Le seul retard que j'ai pu réellement relever se situe aux niveaux des calculs mathématiques lourds. Mais ce retard peut-être trés réduit voir carrement annulé en utilisant du code unsafe. Je dis ca, bien sur, en partant du principe que l'on sait optimiser le code écrit en C# pour ce type d'applications... mais c'est un autre sujet.
Ensuite je pense qu'il ne faut pas perdre de vue que la programmation graphique à largement évoluée et la capacité des GPU à prendre en charge de plus en plus de calculs autrefois destinés au CPU permet à quelques langages autre que le C++ de s'en tirer bien plus honorablement en terme de performances. Car ce que l'on codait autrefois dans le programme se retrouve maintenant cablé en hardware dans le GPU.
Bref je suis d'accord avec ceux qui disent que le C++ est plus une habitude historique qu'autre chose. Quand cela fait 10 ans que vous développez votre moteur 3D (avec l'investissement qui va avec), vous allez pas vous amuser à tout recoder alors que vous avez déjà un produit fini performant... De la même manière si vous faite de la programmation graphique depuis 10 ans en C++, le plus simple (et surement le plus naturel) est quand même de continuer dans cette voie.
Personnellement pour mes projets, c'est une partie en C++ et une partie en C#. Alors oui, si je fesais tout en c++ je gagnerais 3-4 fps sur 100. Est-ce que ca vaut vraiment le coup par rapport au temps que cela va me demander en plus ? Pour moi c'est non... aprés je pense que c'est surtout une question de feeling... d'habitude... ou de besoin... mais certainement pas une question de perfs.
Exactement, mais ce qui est vrai pour C# est plus complexe pour les autres.
Par exemple, grand fan de Ruby, il est quasi impossible aujourd'hui de sortir un truc valable en opengl, vraiment BEAUCOUP trop lent.
Par contre en java ca commence a être réalisable, mais bon, la ou C# a été pensé pour DX (en partie en tout cas), JAVA se met difficelement à l'openGL.
Mais bon je pense que C++/C#/JAVA ca se vaut en OGL/DX, en tout cas même si pour le moment je n'atteint pas les perfs de mes appli C++/OGL, le couple JAVA/OGL me simplifi grandement la vie
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager