IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

C# + DirectX + Visual Studio 2012


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 198
    Points : 185
    Points
    185
    Par défaut C# + DirectX + Visual Studio 2012
    Bonjour,

    Y-a-t-il un moyen de programmer DirectX avec du C# sous visual studio 2012 ?

    J'ai trouvé des tutos (video) que j'ai suivi avec VS2010, mais je n'ai aucun exemple qui fonctionne.

    La compilation fonctionne, mais quand j'execute j'ai un message qui dit que l'application a cessé de fonctionné, avec nom d'évènement du problème CLR20r3. Après je ne peux que "fermer" le programme.

    Aucune erreur n'est signalé pas VS, du coup ben comme je découvre DirectX, je ne sais pas ce qui va pas.

    Je mets le code que j'ai essayé au cas où:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.DirectX;
    using Microsoft.DirectX.Direct3D;
     
    namespace Simple_fenetre_directx_3
    {
        public partial class Form1 : Form
        {
            private Device device = null;
     
            public Form1()
            {
                InitializeComponent();
                InitializeDevice();
            }
     
            private void InitializeDevice()
            {
                PresentParameters pp = new PresentParameters();
                pp.Windowed = true;
                pp.SwapEffect = SwapEffect.Discard;
                device = new Device(0, DeviceType.Reference, this, CreateFlags.SoftwareVertexProcessing, pp);
            }
     
            protected override void OnPaint(PaintEventArgs e)
            {
                device.Clear(ClearFlags.Target, Color.CornflowerBlue, 0, 1);
                device.Present();
            }
     
        }
    }
    Bref, si quelqu'un a un lien qui amène sur un tuto qui fonctionne pour démarrer avec C# + DirectX + VS2012, je suis preneur ! ...

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 198
    Points : 185
    Points
    185
    Par défaut
    C'est du DirectX direct que je voudrai tester.

    J'ai vu un tuto sous VS2010, ou le gars ne faisait qu'insérer les références de DirectX (DirectX et Direct3D), pas faisable sous VS2012 ?

  4. #4
    Membre habitué

    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juillet 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Juillet 2009
    Messages : 62
    Points : 157
    Points
    157
    Par défaut
    Pourquoi ne veux tu pas utiliser SharpDX ?

    Car comme indiqué sur leur site :

    SharpDX is an open-source project delivering the full DirectX API under the .Net platform, allowing the development of high performance game, 2D and 3D graphics rendering as well as realtime sound application.

    SharpDX is built with a custom tool called SharpGen able to generate automatically a .NET API directly from the DirectX SDK headers, thus allowing a tight mapping with the native API while taking advantages of the great strength of the .Net ecosystem.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 198
    Points : 185
    Points
    185
    Par défaut
    Simplement parce que si demain ou dans 3 mois, 1 an ou 5 ans le projet SharpDX est abandonné comme il y en a eu beaucoup d'autres, j'aurai passé du temps à bosser dessus pour rien. La dernière news date du 16 Septembre 2013 soit 4 mois, et le 28 Août ils annoncent qu'ils ferment le forum après 1 an parce que ca leur prend trop de temps, et qu'ils ne bossent pas que sur SharpDX, mais aussi d'autres projets externes. Pour la faire court, je suis plutôt sceptique quand à l'avenir de SharpDX.

    Je cherche une solution pérenne, je me suis mis au C# que j'aime beaucoup, et la seule chose qu'il me manque, c'est une solution pour dév des petits jeux/editeur de level, etc .. dans un environnement que je vais utiliser couramment et surtout une solution qui ne sera pas abandonné à court terme, dans 6 mois ou 2 ans ou 4 ans.

    Donc, pour revenir au sujet initial, est-il possible "d'attaquer" du directx avec C# + VS2012 (ou VS2013, je vais l'avoir bientôt...) en direct ? Comme je disais, j'ai trouvé des tutos en vidéos sous VS2010, mais rien sous VS2012 qui fonctionne.

    Une solution ? ....

  6. #6
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 641
    Points : 2 154
    Points
    2 154
    Par défaut
    Installer le Windows 8 SDK pourrait résoudre le problème , vu que Microsoft a inclut le SDK DirectX pour Visual studio 2012 dedans (d’après ce que j'ai lu il n'y a pas très longtemps , mais je ne garantis rien.

    Si c'est déjà fait alors je ne sais pas désolé .

    Pour en revenir aux technologies "mortes" , je ne vois pas le problème ,il y a des tas de gens , même commerciaux , qui utilisent des frameworks / moteurs / etc , qui ne sont pu a jour , quel est donc le soucis ? Personnellement j'utilise XNA (que je te conseille fortement , il est idéal pour débuter et il permet de faire des jeux de qualité commerciale) et il n'est plus officiellement a jour , mais il y a déjà tout ce qui faut pour m'aider a faire un jeu.

  7. #7
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par Unkof Voir le message
    Simplement parce que si demain ou dans 3 mois, 1 an ou 5 ans le projet SharpDX est abandonné comme il y en a eu beaucoup d'autres, j'aurai passé du temps à bosser dessus pour rien. La dernière news date du 16 Septembre 2013 soit 4 mois, et le 28 Août ils annoncent qu'ils ferment le forum après 1 an parce que ca leur prend trop de temps, et qu'ils ne bossent pas que sur SharpDX, mais aussi d'autres projets externes. Pour la faire court, je suis plutôt sceptique quand à l'avenir de SharpDX.

    .
    tu as parfaitement raison ,les solutions tierces ( comme SharpDX ou SDL.. ),c'est à éviter parce que comme tu l'écris si la couche logicielle est abandonnée il faut refaire tout le travail...
    C'est comme les entreprises qui veulent migrer leur projet de Delphi ou VB6 vers dotNET ça coûte une fortune.

    Ce que tu as intérêt à faire c'est des classes qui font abstraction des accès matériels( son,affichage..) comme ça si tu veux faire évoluer ton jeu , il n'y pas beaucoup de code à réecrire.

    Maintenant pour répondre à ta question as-tu essayé de compiler avec une version du Framework antérieure comme par exemple .NET 1.0 ou .NET 2.0 ?
    Ce qu'il est possible de faire c'est si tu as les sources de Sharp DX de juste reprendre les parties d'affichage..

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 198
    Points : 185
    Points
    185
    Par défaut
    PixelJuice:J'ai lu justement cet après midi que dans le windows 8 sdk, ils ont inclus le sdk directx pour vs2012, mais je n'ai pas encore testé, je vais essayer.

    Concernant les technologies mortes, le problème c'est justement qu'elles sont ... mortes. Si je dois passer X mois a bosser sur une techno et l'abandonner dans 1 an ou 2 ans parce que ca ne fonctionnera plus pour une raison X ou Y, et que dans 2 ans je dois me mettre à DirectX parce qu'il n'y a que ca qui fonctionne (pure supposition, mais au moins je suis sûr que DirectX sera toujours là lui ...), autant que je me mette à DirectX tout de suite plutôt que de vouloir prendre un chemin plus facile pour "perdre" plusieurs mois et revenir sur Directx au final.

    J'ai déjà testé XNA, et c'est vrai que franchement je le trouvais bien ... mais quand j'ai sû que Microsoft avait tout arrêté concernant XNA, j'ai arrêté moi aussi.

    Il faut passer beaucoup de temps pour apprendre des technos, et je n'ai plus envie de perdre du temps à apprendre un truc qui de toute facon est déjà "mort", même si il fonctionne encore aujourd'hui.

    Mat.M:Bonne idée oui, je vais compiler avec une version antérieure pour voir.
    SharpDX est un open source, donc on peut avoir les sources, mais je n'ai pas encore le niveau en C# pour en extraire quelque chose.

    Je vais voir les 2 pistes que vous m'avez donné, le windows 8 sdk et compiler avec une ancienne version ..

  9. #9
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    Bonjour
    La seule version managed ,depuis abandonne par microsoft,mais toujours telechargeable et fonctionnelle sous vs 2010 est la :
    -Directx SDK JUNE 2010

    Beaucoup d'exmples ,tutos en c#,vb.net....

    Pour le DX SDK Windows 8 faut pas se leurrer il faut programmer coder DX en c++...
    La seule nouveaute c'est l'interoperabilite du code DX ecrit en c++ avec les Appli XAML sous Win 8 code en c# ou en vb.net....
    Un apercu sur ce blog msdn.com intitule :
    "Where is the DirectX SDK (2013 Edition)? - Games for Windows and..."
    http://www.google.fr/url?q=http://bl...4ZHCPTlDcnFfLQ

    Ce blog discute de :
    -2 nouveux controls XAML pour heberger un contenu DirectX (genere en c++ ) qui sont plus simples d'utilisation que l'ancien control D3DIMAGE .C'est le mode fenetre pour afficher un contenu DX dans une appli XAML(c# ou vb.net)...
    -un nouveau class xaml qui permet d'utiliser du contenu DX en XAML en mode plein ecran utile pour les appli de jeux...
    Bon code...

  10. #10
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Citation Envoyé par Unkof Voir le message
    Simplement parce que si demain ou dans 3 mois, 1 an ou 5 ans le projet SharpDX est abandonné comme il y en a eu beaucoup d'autres, j'aurai passé du temps à bosser dessus pour rien. La dernière news date du 16 Septembre 2013 soit 4 mois, et le 28 Août ils annoncent qu'ils ferment le forum après 1 an parce que ca leur prend trop de temps, et qu'ils ne bossent pas que sur SharpDX, mais aussi d'autres projets externes. Pour la faire court, je suis plutôt sceptique quand à l'avenir de SharpDX.

    Je cherche une solution pérenne, je me suis mis au C# que j'aime beaucoup, et la seule chose qu'il me manque, c'est une solution pour dév des petits jeux/editeur de level, etc .. dans un environnement que je vais utiliser couramment et surtout une solution qui ne sera pas abandonné à court terme, dans 6 mois ou 2 ans ou 4 ans.
    Désolé pour le HS.

    Personnellement, je ne te trouve pas cohérent.

    Je me suis posé les mêmes questions, mais je n'arrive pas aux mêmes conclusions.

    Il y a eu C++ managed (abandonné).
    Il y a eu XNA version 1.0/2.0/3.0.
    Il y a eu xna 4.0, une refonte du XNA précédent, donc tout à revoir niveau code (en cours d'abandon).
    Il y a des projets externes SharpDX, SlimDX, etc... Mais à l'avenir incertain si on t'écoute. Mais globalement j'adhère sur ce fait. Avec un petit bémol pour SlimDX, parce que je connais une boîte commerciale qui n'aimerai pas que cette technologie disparaisse.
    Il y a Microsoft.DirectX (visiblement, tu galères à l'utiliser...).
    Il y a l'interop COM (plutôt stable aujourd'hui mais délicat à cause du Garbage Collector et de l'interaction COM).

    Bref, plein de façon de faire du DirectX en C#, mais on peut se poser la question du pourquoi "plein de façon", bizarre, non...

    DirectX c'est du C++. Alors pourquoi ne pas choisir le C++. A l'heure actuelle, c'est certainement le choix le plus pérenne. Enfin c'est mon avis.

    Pour un projet type jeux vidéo, le C# n'apporte pas grand chose en terme de productivité. Par exemple lorsque tu passes ton temps à optimiser un shader, à optimiser l'IA, à optimiser la physique, le C# n'apporte rien de plus. Et c'est bien sur ces points que tu passes beaucoup de temps. Evidemment si c'est pour développer un jeu de belote, ça doit même pouvoir se faire dans presque tous les langages.

    On voit que la technologie DirectX en C# se cherche, et lorsque l'on voit toutes les variantes, on se dit qu'elle ne s'est pas trouvée. Et s'il elle ne s'est pas trouvée, alors on ne peut pas présumé de sa pérennité.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 198
    Points : 185
    Points
    185
    Par défaut
    Mabrouki:L'histoire des 2 nouveaux contrôles XAML pour le contenu fenetré DirectX m'intéresse, et la nouvelle classe XAML pour le plein ecran aussi. Ca pourrait répondre à mon besoin, je vais essayer de trouver plus d'infos là dessus, merci.

    Moldavi:Oui, c'est clair, t'es plutôt HS.

    Il ne s'agit pas de savoir quel langage il vaut mieux apprendre pour "jouer" avec DirectX.

    Le sujet initial du post est, quelles sont les possibilités pour utiliser DirectX en C# en utilisant VS2012 ou VS2013.

    Si il n'y a pas d'autre solution, j'opterai alors soit pour du C++ soit pour un framework style XNA, soit pour du Managed style SharpDX, mais en fait ni l'un ni l'autre ne me convient réellement, d'où ma question initiale.

    L'info donnée par Mabrouki est une alternative intéressante pour moi, garder une appli XAML en C#, et avoir du contenu DirectX, même si c'est en C++. Il faut juste voir la mise en route, et trouver la doc qui va bien ... ^^

  12. #12
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Citation Envoyé par Unkof Voir le message
    Mabrouki:L'histoire des 2 nouveaux contrôles XAML pour le contenu fenetré DirectX m'intéresse, et la nouvelle classe XAML pour le plein ecran aussi. Ca pourrait répondre à mon besoin, je vais essayer de trouver plus d'infos là dessus, merci.

    Moldavi:Oui, c'est clair, t'es plutôt HS.

    Il ne s'agit pas de savoir quel langage il vaut mieux apprendre pour "jouer" avec DirectX.

    Le sujet initial du post est, quelles sont les possibilités pour utiliser DirectX en C# en utilisant VS2012 ou VS2013.

    Si il n'y a pas d'autre solution, j'opterai alors soit pour du C++ soit pour un framework style XNA, soit pour du Managed style SharpDX, mais en fait ni l'un ni l'autre ne me convient réellement, d'où ma question initiale.

    L'info donnée par Mabrouki est une alternative intéressante pour moi, garder une appli XAML en C#, et avoir du contenu DirectX, même si c'est en C++. Il faut juste voir la mise en route, et trouver la doc qui va bien ... ^^
    SharpDX est une continuité à XNA, tu peux reprendre d'ancien jeu développé sur XNA et les transposer sur SharpDX, de plus c'est un projet opensource rien ne t'empêche dans 2 ou 3 ans si le projet est abandonné dans faire un Fork (d'ici là tu seras surement meilleur en programmation), l'un des avantages de SharpDX est de pouvoir fonctionner sur Windows 8 Metro et Windows Phone8.

    Sinon tu peux faire un Wrapper en C++Cli qui te permettrai d'appeler plus simplement tes méthodes directX depuis un code managé mais ça reviendrait à faire ce que fais déjà SharpDX.

  13. #13
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Je vais éviter le hors sujet...

    EDIT:

    j'ai tenté une compilation avec VS2012 sous Seven.

    Pour la première étape, j'ai chargé les dll Microsoft.DirectX car elles ne sont pas présentes par défaut...

    Ensuite, il faut modifier le fichier app.config et ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <supportedRuntime version="v1.1.4322"/>
    Malheureusement, cela ne suffit pas. Il semble manquer des dépendances :

    API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL
    API-MS-WIN-CORE-WINRT-L1-1-0.DLL
    etc...

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 585
    Points : 1 139
    Points
    1 139
    Par défaut
    Il n'y a pas de "Direct X directement" en C#, il faut passer par du C++ depuis que Microsoft a abandonné son Managed DirectX à la version 9...
    SharpDX c'est juste la couche qui rajoute le "#" du C# à la biblio DirectX C++ , à peu de choses près. Et ça fait du DirectX 11. Et ils vont sans doute le maintenir pendant au moins "un certain temps", puisque c'est utilisé par le projet où est parti son créateur : Paradox3d.

    Citation Envoyé par moldavi Voir le message
    Pour un projet type jeux vidéo, le C# n'apporte pas grand chose en terme de productivité.
    Oui, mais non. Quand tu connais C#, tu n'as aucune envie d'apprendre (ou de réapprendre) C++. Et donc tu programmes tes jeux en C#, et à moins de vouloir refaire un truc mégatop-AAA d'aujourd'hui, c'est excellent ! Et comme ça, tu mets 6 mois ou 2 ans, et pas 6 ans
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

Discussions similaires

  1. Visual Studio 2012 sortira le 12 septembre
    Par Hinault Romaric dans le forum Visual Studio
    Réponses: 15
    Dernier message: 05/02/2013, 10h47
  2. Réponses: 0
    Dernier message: 16/08/2012, 10h05
  3. Réponses: 23
    Dernier message: 15/06/2012, 21h52
  4. Visual Studio 2012 : quoi de neuf dans la Release Candidate ?
    Par Hinault Romaric dans le forum Visual Studio
    Réponses: 23
    Dernier message: 11/06/2012, 09h37
  5. Visual Studio 2012 Release Candidate disponible
    Par Hinault Romaric dans le forum Visual Studio
    Réponses: 3
    Dernier message: 03/06/2012, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo