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

DirectX Discussion :

Directx en pur C , c'est une pure utopie?


Sujet :

DirectX

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Directx en pur C , c'est une pure utopie?
    Bonsoir à tous

    Comme indiqué dans le sujet, je cherche à savoir s'il est possible d'utiliser Directx9 en C (au moins juste la gestion 2D). La doc off nous alleche en nous promettant une utilisation en C et C++ mais la suite n'en parle plus.

    D'où les questions: directx9 en C est ce possible ? Comment détourner les fonctions virtuelles en C :

    Merci de votre attention
    Alex
      0  0

  2. #2
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    La plupart des functions de D3D (Attention ce n'est pas le cas pour D3DX!)
    définissent des macros qui sont communes à COM pour appeler les fonctions membres.

    #define IDirect3D9_GetAdapterIdentifier(p,a,b,c) (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
    ...
    #else
    ...
    #define IDirect3D9_GetAdapterIdentifier(p,a,b,c) (p)->GetAdapterIdentifier(a,b,c)
    ...
    #endif
    Ceci dit tu te prives de D3DX et personnellement je pense que ça n'a vraiment que peu d'interet parce que
    1 sur toutes les plateformes qui font tourner Dx tu as de bons compilateurs C/C++.
    2 Et de manière générale meme si tu es hermétique au C++ (classes et templates), tu peux programmer à la manière du C, grace à la compatibilité des compilateurs C++. C++ c'est juste un "meilleur C".

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA
      0  0

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par LeGreg
    C++ c'est juste un "meilleur C".
    Cherie ? ca va troller.

      0  0

  4. #4
    doccpu
    Invité(e)
    Par défaut
    Histoire trolle : C# est plus facile a utiliser avec DirectX que C++ pour le un newbee comme moi en DirectX par contre le tout est d'arriver a bien instaler Direct X !

    C++ est une couche superieure au C
    C# est une couche paralèlle qui utilise les API de bases du C++ et du C d'après ce que j'en sait !
      0  0

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut re
    Bonjour
    La contrainte d'un code 100% C vient du fait que je dois developper une couche bas niveau pour gérer un visuel 2D (fenetres) dans un langage basé sur le c. Directx a été choisi pour la platforme win pour ses perf.
    Bonne journée
    Alex
      0  0

  6. #6
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par acetyl
    D'où les questions: directx9 en C est ce possible ? Comment détourner les fonctions virtuelles en C ??
    Prendre exemple sur ce que dit Le Greg ; sinon tu peux prendre exemple sur le code source de Quake II totalement conçu en pur C et qui utilise des redéfinitions sur les interfaces COM ( avec des pointeurs de pointeurs )

    C# c'est absolument à laisser tomber ; c'est bien pour faire une maquette mais ça s'arrête là
    C# est 8 fois plus lent au moins que C++ même avec une appli GUI MFC.
    Je prépare un comparatif là dessus .
    .NET c'est pas fait pour développer des jeux vidéos
      0  0

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par doccpu
    C# est une couche paralèlle qui utilise les API de bases du C++ et du C d'après ce que j'en sait !

    c'est absolument faux ; C# n'est pas une couche paralèlle à C++ et API
    C# passe par le framework .NET ; en plus c'est pas du code compilé natif binaire mais un pseudo-code interprété par .NET ( Intermediate Langage Compiler )
      0  0

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    merci pour vos réponses. J'ai pu utiliser directx en pur C en passant par les sublimes MACRO préparées par Win : IDirect3DDevice9_FONCTION.

    Bon trollage
      0  0

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Points : 75
    Points
    75
    Par défaut
    je développe un jeu (Tactical RPG) en C#/DirectX avec un ami, et contrairement à ce qu'on peut voir sur les forums, les performances sont vraiment bonnes et bcp mieux qu'en VB6. Pour dire, j'ai un vieux PIII à 633 Mhz, et le jeu (pour l'instant tourne) aux alentours de 80-90 FPS (le jeu n'est pas à la pointe de la technologie c'est vrai).
    Il est vrai qu'en c++ les performances auraient été globalement meilleures (sauf dans la gestion des lumières où le c# s'en tire beaucoup mieux selon des benchmarks).

    On a choisit le C# pour la simplicité du code et la gestion des classes qui devient plus lisible et moins fastidieuse (sans des includes à la pelle du c++). Et étant donné le succès du .Net et que le futur Windows l'intègrera, il est, à mon avis, important, de se lancer dans le C#(surtout pour un novice). Cependant, il est vrai que le milieu du jeu vidéo développe quasiment qu'en c++ (mais ça risque de changer, pour le monde du pc, peut être pas pour la console de salon) car il n'est pas dépendant du Framework (absent d'une console par exemple la ps2).

    L'important dans la programmation est de comprendre tout ce que l'on fait, mais certaines tâches rébarbatives du c++ (ne serait ce que les chaines de caractères) sont d'un archaïsme sidérant, car aujourd'hui on se doit de développer plus vite en se déchargeant des contraintes superflues même si on a le sentiment de ne plus tout contrôler de A à Z.

    Si tu veux utiliser le langage C, bon courage, mais tu devras un jour ou l'autre passer le cap du .Net (ou de langages plus évolués), car le C commence à dater et que la nostalgie dans l'informatique n'a pas sa place.
      0  0

  10. #10
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par backfire
    je développe un jeu (Tactical RPG) en C#/DirectX avec un ami, et contrairement à ce qu'on peut voir sur les forums, les performances sont vraiment bonnes et bcp mieux qu'en VB6.
    eh bien Backfire on attend que cela soit finalisé
    Un lien avec des "screenshots" ???



    Si tu veux utiliser le langage C, bon courage, mais tu devras un jour ou l'autre passer le cap du .Net (ou de langages plus évolués), car le C commence à dater et que la nostalgie dans l'informatique n'a pas sa place.
    D'accord;
    Le C commence à dater ( quand est-il de C++ alors ?? )

    Peut-tu me dire ce qu'apporte C# de révolutionnaire et de neuf ?
    à part la gestion de la mémoire et le code managed ?
      0  0

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Points : 75
    Points
    75
    Par défaut
    Peut-tu me dire ce qu'apporte C# de révolutionnaire et de neuf ?
    De révolutionnaire pas grand chose effectivement puisqu'il s'est beaucoup inspiré du Java (un euphémisme lol), mais les namespaces sont très pratiques par exemple. Le plus majeur pour moi est la facilité déconcertante dans la programmation (et l'intellisense des IDE) et accès aux classes/méthodes/propriétés. Je ne supporte pas de perdre du temps pour des fonctions récurrentes et basiques. Du coup, il est meme plus facile de développer du code (propre) qu'en Visual basic 6. Bref, pour moi ce sont de bonnes raisons puisque je ne ressens pas de frustration du au C# (donc pas envie de retourner en arrière ->C++ ne serait ce que par rapport aux pointeurs)

    eh bien Backfire on attend que cela soit finalisé
    Un lien avec des "screenshots" ???
    Donner un lien sur des screenshots ne serviraient à rien puisqu'on est concentré sur le code du moteur et non sur le design/graphisme. Cependant on a testé une carte avec 1024 objets en 3d (sans compter les persos et ennemis). Sinon je serai ravi de pouvoir vous informer de la sortie de notre démo beta.

    Le c++ n'est pas mort et sera utilisé encore pendant très longtemps car on a besoin d'un langage de bas niveau pour les futures technologies.
      0  0

  12. #12
    mat.M
    Invité(e)
    Par défaut
    hé tu parles de VB6
    En aucun cas j'ai fait allusion à VB6

    Donner un lien sur des screenshots ne serviraient à rien puisqu'on est concentré sur le code du moteur et non sur le design/graphisme. Cependant on a testé une carte avec 1024 objets en 3d (sans compter les persos et ennemis). Sinon je serai ravi de pouvoir vous informer de la sortie de notre démo beta.
    Comment peux-t-on avoir envie de jouer alors au jeu que tu développes ?[/quote]
      0  0

  13. #13
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par doccpu

    C# est une couche paralèlle qui utilise les API de bases du C++ et du C d'après ce que j'en sait !
    c'est absolument faux ; C# n'est pas une couche paralèlle à C++ et API
    C# passe par le framework .NET ; en plus c'est pas du code compilé natif binaire mais un pseudo-code interprété par .NET ( Intermediate Langage Compiler )
    Merci de confirmer que C# utilise le Framework.NET qui est une couche paralèlle aux dll systèmes en C++ (bien qu'il s'appuie sur quelques unes des dll de commandes de base)

    Citation Envoyé par backfire
    Peut-tu me dire ce qu'apporte C# de révolutionnaire et de neuf ?
    De révolutionnaire pas grand chose effectivement puisqu'il s'est beaucoup inspiré du Java (un euphémisme lol), mais les namespaces sont très pratiques par exemple. Le plus majeur pour moi est la facilité déconcertante dans la programmation (et l'intellisense des IDE) et accès aux classes/méthodes/propriétés. Je ne supporte pas de perdre du temps pour des fonctions récurrentes et basiques. Du coup, il est meme plus facile de développer du code (propre) qu'en Visual basic 6. Bref, pour moi ce sont de bonnes raisons puisque je ne ressens pas de frustration du au C# (donc pas envie de retourner en arrière ->C++ ne serait ce que par rapport aux pointeurs)
    Grosse aberation de programmation le pointeur de nos jours : peu fiable, pas très lisible, affectations parfois erroné d'ou plantage general de la machine. Bref pourquoi se faire chi... a gérér la memoire quant quelquechose le fait pour vous ? Maintenant, que l'on a l'ouvre-boites pourquoi continuer a les ouvrir avec les dents ? (f(x)=ax²)
    pour moi les languages C++ sont en passe d'etre comdanés et le seront dès le lancement officiel de Longhorn sur le marché qui ne pourra etre attaqué que par les languages .NET (C#, VB.NET, Pascal, J#,....) le tout sans possibillité d'utiliser le codes unsafe puisque microsoft souhaite erradiquer la possibilité de créer un bug ou un virus sur ses futurs OS.
    donc un jour on sera obligé de passer par le framework pour ce qui concerne les OS Microsoft.

    Citation Envoyé par backfire
    eh bien Backfire on attend que cela soit finalisé
    Un lien avec des "screenshots" ???
    Sinon je serai ravi de pouvoir vous informer de la sortie de notre démo beta.
    je suis intéréssé même pour developper juste des interfaces, des instalateurs ou la base de donnée. (Bac +2, Informatique de Gestion : SQL Server, MySQL, Access avec UML et Merise. je sait aussi utiliser Power AMC)

    Citation Envoyé par backfire
    Le c++ n'est pas mort et sera utilisé encore pendant très longtemps car on a besoin d'un langage de bas niveau pour les futures technologies.
    Oui sous linux/unix ou OS/2 , ou les anciens systèmes microsoft, pour ce qui est de longhorn j'en mettrais pas ma main a couper.
      0  0

  14. #14
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par doccpu
    Grosse aberation de programmation le pointeur de nos jours : peu fiable, pas très lisible, affectations parfois erroné d'ou plantage general de la machine. Bref pourquoi se faire chi... a gérér la memoire quant quelquechose le fait pour vous ?

    Grosse aberation ?

    Oui mais en définitif .NET lorsqu'on descend de niveau en niveau c'est toujours des ....pointeurs et accès direct à la mémoire...

    Avec quoi c'est développé .NET ?

    oui c'est vrai pourquoi se casser la tête ....
    Mais si tu y regardes vraiment de plus près tu peux comprendre pourquoi je privilégie le C++ pour les jeux vidéos à des trucs "préfabriqués" comme C#.

    Quand tu déclares surface_direct_draw->Blit en C++ , tu accèdes directement à l'adresse mémoire de surface_direct_draw en live

    Quand tu déclares en C# ou VB NET surface_direct_draw.Blit, qu'est-ce qui se passe ?
    J'essaie de schématiser :
    1- il faut passer d'abord par le runtime de NET surcouche au-dessus de l'OS
    2- le runtime du Framework regarde si on a accède à une zone non protégée ( en mémoire ?? )
    3- qu'est-ce qui me prouve que le Framework n'effectue pas en même temps des contrôles sur d'autres composantes internes

    Un jeu qui tourne bien c'est au minimum 24 fps .
    Déjà avec VC++ 6 ça finit par ramer
    Imagine pour un RPG afficher 20*20 tuiles à l'écran ; donc ça fait x opérations multipliées par les 3 étapes que je viens de décrire sour .NET
    Je ne parle même pas d'afficher une "mesh" avec des textures dessus

    le tout sans possibillité d'utiliser le codes unsafe puisque microsoft souhaite erradiquer la possibilité de créer un bug ou un virus sur ses futurs OS.
    cela n'a absolument RIEN à voir !!!!
    Même avec VBScript qui pourtant est parfaitement Safe on peut faire des virus.
    A partir du moment où on laisse la possibilité au programmeur de toucher aux entrées sorties telles que par exemple ouvrir un fichier on peut créer n'importe quel programme malveillant.
    Sans compter que dans n'importe quel langage on peut accèder aux répertoires et sous-répertoires
    En .NET je peux parfaitement créer un .exe qui affiche une pin-up , que je distribue à tout le monde et qui une fois démarré vire tous les fichiers qu'il rencontre sur disque



    Si ton .NET il est si bien et que programmer avec des pointeurs c'est une aberration , pourquoi FarCry , Half Life 2 oun StrongHold ne sont pas développés en C# et .NET ?
    Je suis idiot ou quoi ?
      0  0

  15. #15
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Perso je développe aussi un jeu en C# et je suis étonné de la rapidité. (Avec ou sans utilisation de directX).

    Le code intermédiaire .Net n'est pas interprété contrairement à l'idée reçue. Il est compilé en natif au moment ou l'on en a besoin. (Et pour ceux que ca dérangerait, il est possible de générer d'un coup la totalité du binaire natif avec ngen.exe)

    Les pointeurs sont toujours là, ayant migré de C++ builder vers C# je continue à travailler en C# en gardant à l'esprit que derrière il gère des pointeurs.

    Et à mon sens, quelques mois après la sortie grand publique de Windows Longhorn, on devrait voir apparaître les premiers jeux fait en .Net. Par la suite sous PC, on ne devrait trouver plus que ca. (car tu en vois encore des jeux qui sortent écrit en assembleur ? Là c'est pareil, nouvelle API de l'OS => adaptation de l'industrie du jeux)

    Un bon compromis pour ceux qui veulent toujours programmaer en "voyant" les pointeurs : le Managed C++.
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/
      0  0

  16. #16
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Harry_polin
    Là c'est pareil, nouvelle API de l'OS => adaptation de l'industrie du jeux)
    ok Harry Polin ; nous sommes impatients de voir ça alors
      0  0

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Points : 75
    Points
    75
    Par défaut
    Un jeu qui tourne bien c'est au minimum 24 fps
    Comme nos écrans fonctionnent en 50Hz, le minimum devrait être plutôt 25 fps non ?

    En ce qui concerne la vitesse des jeux directx développés en c#, je peux vous assurer que c'est bluffant (80-90 fps avec 256 objets en 3d texturée, et une dizaine de quads (c pas ça qui consomme des FPS) ).

    Bref arrêtez de martiriser à tord le c# qui, s'en sort très bien, et puis nous verrons bien dans l'avenir si les jeux en c# apparaîtront ou pas car le framework serait installé de base sur longhorn (à mon avis les jeux ne seront pas développés en c++ pou linux...) car ce n'est pas nous qui dessinerons le marché futur du jeu et de la programmation (une goutte d'eau).
      0  0

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    pour en rajouter un peu

    le fx.net 2.0 ajoute quelque chose qui va très fort amélioré les performances:
    les generics (templates c++) ainsi, fini le boxing unboxing pour toutes les lists! gain de performance enOrme.
      0  0

  19. #19
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par backfire

    En ce qui concerne la vitesse des jeux directx développés en c#, je peux vous assurer que c'est bluffant (80-90 fps avec 256 objets en 3d texturée, et une dizaine de quads (c pas ça qui consomme des FPS) ).
    Ok j'attends de voir ça avec impatience . Un lien vite
    C'est peut-être que des paroles alors je veux juger sur pièces




    Citation Envoyé par backfire
    car le framework serait installé de base sur longhorn (à mon avis les jeux ne seront pas développés en c++ pou linux...)
    oui il sera installé de base sur Longhorn et alors ?
    Il y aura toujours des API en C .
    Et le prochain Ms Office il sera écrit 100% en NET ?

    Citation Envoyé par backfire
    car ce n'est pas nous qui dessinerons le marché futur du jeu et de la programmation (une goutte d'eau).

    Non ce sont les gros éditeurs qui font le marché comme Ubi Soft , EA ....
    est-ce que leurs équipes programment avec C# leurs jeux ?
      0  0

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Points : 75
    Points
    75
    Par défaut
    C'est étrange quand même comme les défenseurs du c++ sont agressifs, alors que les amateurs du c# sont plus enthousiastes, serait ce du à une frustration ou à une vérité dure à accepter ?

    Bref, le sujet était de savoir s'il était possible de faire un jeu en directx en pur C, donc la réponse est oui, bien sûr, mais le choix de type de jeu/application reste très limité (pas de programmation objet, toutes les classes directx ne pourront pas être utilisées...). Bonne chance.
      0  0

Discussions similaires

  1. Module dont le nom est une variable
    Par Mr Hyde dans le forum Général Python
    Réponses: 11
    Dernier message: 26/02/2023, 20h39
  2. Réponses: 4
    Dernier message: 27/02/2009, 14h57
  3. Réponses: 1
    Dernier message: 11/10/2005, 23h50
  4. [CR10] Comment savoir si c'est une nouvelle page ?
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 23/09/2005, 18h18
  5. Réponses: 6
    Dernier message: 06/12/2004, 22h18

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