Question

J'ai une petite question à propos de l'exécution d'une application DirectX (C ++) dans un environnement géré. J'essaie d'écrire un outil MDI (en C #) dans lequel l'arrière-plan de la fenêtre parente serait une fenêtre de rendu incorporée de DirectX (C ++).

J'ai lu des méthodes qui impliquaient l'écriture du C ++ dans une dll native, mais il serait préférable de pouvoir inclure les projets C ++ dans la solution (je ne sais même pas si cela est possible). Quoi qu'il en soit, si vous connaissez des étapes utiles, des astuces ou s'il s'agit d'une mauvaise idée en général, veuillez me le faire savoir. Merci!

Était-ce utile?

La solution

La méthode la plus simple consiste à ajouter un projet C ++ / CLI à votre solution. Cela vous permettrait ensuite d'utiliser directement les interfaces COM DirectX et de créer un wrapper géré facile à appeler à partir de votre code C #. J'ai adopté cette approche à quelques reprises et c'est de loin le moyen le plus simple de mixer DirectX et .Net que j'ai jamais essayé. DirectX géré était une option, mais il n’est plus pris en charge et c’était quand même un assez petit sous-ensemble de l’API COM complète.

Autres conseils

Tout d’abord, écrire la partie C ++ dans un fichier dll différent ne signifie pas qu’il ne pourrait pas être à la même solution que le projet C #.

Pour utiliser le rendu DX natif sur une fenêtre gérée, vous devez transmettre l'ID de la fenêtre HWND (utilisez form.WindowId.ToInt32) au c'tor C ++ D3Ddevice. ensuite, chaque fois que vous effectuerez un rendu à l'aide de ce périphérique, celui-ci serait affiché dans la fenêtre .NET.

Pour ce faire, vous avez probablement besoin de deux projets Saparate: une dll C ++ & amp; Projet .NET. utilisez COM wrapper ou p-invoke pour transmettre le HWND à la dll C ++.

Si vous ne voulez pas passer trop de temps à écrire du code C ++ pour DirectX, vous pouvez envisager d'utiliser SlimDX , dans la mesure où Managed DirectX 1.0 est hors de question, car 2.0 ne quitte jamais la version bêta et est remplacé par XNA qui est assez différent de DirectX lui-même et vous oblige à installer XNA Game Studio

SlimDX est la version opensource de DirectX géré avec une structure API et interne légèrement différente, mais il est facile de utilisation. La version récemment publiée est très stable. Je l'utilise actuellement pour écrire une application de production.

SlimDX

DirectX géré

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