9
votes

Programmation DirectX en C?

Dans le passé, j'ai créé des applications DirectX dans la langue de programmation C ++, cependant, j'aimerais savoir s'il est possible de le faire en utilisant le langage de programmation C.

Merci.


1 commentaires

Existe-t-il une raison pour la restriction C-seule?


5 Réponses :


11
votes

oui c'est possible. DirectX expose une interface COM et C est capable de les consommer. Ce ne sera pas un bateau entier de plaisir!


2 commentaires

J'ai essayé. Vous vous habituez, mais ce n'est toujours pas agréable ni facile.


De cette façon est aussi possible mais comme David mentionné cela ne sera pas amusant du tout. Bonne chance si vous essayez de prendre cet itinéraire.



0
votes

Je pense que les bibliothèques DirectX ont des composants C ++ uniquement (cela a été un certain temps depuis que je l'ai utilisé et depuis durer je me souviens qu'il contient des cours). Pourrait aussi bien rendre votre vie un peu plus facile et le faire en C ++.


6 commentaires

Ce n'est pas parce que vous ne pouvez pas dire que vous devriez parfois. Bien que s'il souhaite alors, il peut aller sur l'avant hehe.


@Jesus hehe en effet. J'ai récemment dû mettre en place une interface COM dans C. Qui a fait mal à la tête.


J'ai déjà fait des choses similaires, sauf que j'ai un mal à la tête plus gros avec les composants COM dans .NET et C # que C. Bien sûr, il serait sûr de voir certaines choses DirectX travaillant efficacement via COM.


@Jesus ahh, je reçois des souvenirs de quelques bits C ++. Est-ce peut-être peut-être que dans les routines pour transformer les codes d'erreur en messages d'erreur?


@David: Je crois. Bien que je ne sois toujours pas sûr de savoir pourquoi quelqu'un voudrait essayer cela en C à moins d'être masochiste d'une certaine manière (aucune infraction si quelqu'un va essayer cela, je le trouverais plus difficile que nécessaire) .


Raisons de faire n'importe quoi in c: 1 code moins invisible. 2 garanties plus fortes. 3 Outils plus matures. 4 analyse de code de meilleure qualité. 5 meilleure histoire d'interopérabilité. Je suis sûr qu'il y a plus de raisons, mais si vous vous souciez de pouvoir repérer des erreurs lors de la lecture d'une ligne de code, vous ne pouvez pas espérer utiliser C ++.



2
votes

Vous pouvez utiliser DirectX in C. Il dispose de macros spécifiques pour simplifier l'utilisation de l'interface COM. Cependant, il est beaucoup plus facile d'utiliser C ++.


0 commentaires

11
votes

Le Open Watcycl C / C ++ compilateur est livré avec des applications d'échantillonnage DirectX dans C ++ et C. Les deux travaux. Ils sont sous watcom \ échantillons \ directx \ cpp et watcom \ samples \ directx \ c respectivement en ow 1.9.

C'est ce que le code ressemble à C ++: xxx

et en c: xxx

Vous n'avez pas besoin de faire quelque chose de spécial avec COM en C comme il semble que Pour être suffisamment de macros défini que vous pouvez simplement utiliser.


3 commentaires

Les gens devraient être motivés pour répondre de cette manière, s'étendant de "est-il possible ..." C'est comme ça que c'est fait ... ". J'apprécie vraiment les informations que vous avez fournies, je suis débutant et je commençais à penser à créer des emballages C pour les méthodes C ++. Merci.


@Ivanzinho Cela peut ne pas être généralement applicable ni préférable.


Pourquoi n'est-ce pas préférable? J'apprends C et je pense que le meilleur moyen d'apprendre est en l'utilisant réellement. (Je suis en train de programmer en C # depuis plus de 12 ans, je sais ce que l'OOP est)



0
votes

Il est possible, mais parce que vous n'avez pas de fonctions de niveau supérieur C ++, vous le rendez plus difficile pour vous-même.


7 commentaires

Premièrement, cela ne fait rien de plus fort, veuillez apprendre à quel point C est vraiment puissant avant de dire que c est plus difficile que c ++. Deuxièmement, le didacticiel fourni est clairement c ++.


@Geoffrey en fait c'est. Beaucoup de l'API pour Windows utilise C ++ qui est construit à partir de cours. Pour l'utiliser, vous aurez besoin d'accéder à la classe C, est-ce possible? Oui certy. Est-ce la pratique? Pas du tout, il est beaucoup plus facile d'utiliser C ++ dans lequel vous utilisez déjà des cours et vous pouvez donc utiliser l'API tel quel, sans avoir besoin de solution de contournement.


@Geoffrey aussi de votre commentaire que vous dites que je suggérais que c est plus difficile que c ++ (je ne sais pas dans quel contexte vous vouliez dire cela). La courbe d'apprentissage de C est beaucoup plus petite que c ++ (bibliothèque plus petite et syntaxe globale plus petite que c ++). Cependant, dans Ceci cas, où vous essayez d'utiliser des API implamentées pour C ++ les utiliser dans C rend votre vie beaucoup plus fort.


J'ai supprimé le lien comme vous semblez avoir raison, en partie, vous pouvez l'exécuter en C mais dans d'autres, cela semble être C ++. Je verrai si je peux obtenir les exemples de travailler plus tard. @Geoffrey


Voici un exemple en CI SHOW travaillant actuellement sur: github.com/gnif/lookingglass/blob/master/c-host/windows/capt ure / ... . Je ne vois vraiment pas comment c'est beaucoup plus fort, c'est juste un peu différent.


Très agréable. Je vais regarder cela avec intérêt merci. @Geoffrey


Mon point d'expérience est que c seul "semble" plus difficile car il n'y a pas de Raii (donc pas com_ptr). À part ça? Pas beaucoup de différence.