2010-04-12 1 views
3

J'ai actuellement besoin d'un gestionnaire de code DirectX pour .NET. Bien que SlimDX soit génial, son utilisation de code non géré rend impossible l'exécution correcte d'une analyse de code mort, dans le but de la fusionner dans vos assemblages. Avec une enveloppe gérée pure, je serais capable d'inclure seulement les morceaux que j'utilise dans mon assembly, en permettant de très, très petits binaires (mon but est d'être capable d'écrire des démos de 64k entièrement en utilisant .NET).Existe-t-il un encapsuleur DirectX à gestion pure?

Est-ce qu'une telle chose existe, ou vais-je devenir intime avec P/Invoke?

Répondre

1

Rien de tel, vous devez rouler le vôtre. Et vous n'avez pas à vous inquiéter de la taille de vos assemblages lorsque vous utilisez P/Invoke - s'ils sont quelque chose, ils seront beaucoup plus petits que si vous incluiez leurs homologues gérés. En fonction de ce que vous faites (vidéo? Audio? 3D?), DirectShow.NET est un endroit amusant pour commencer avec ce genre de chose, étant donné qu'il est incomplet et n'est plus supporté.

+0

Je prévois d'écrire des démos complètes de 64 Ko (donc audio et 3D dans un seul binaire de 64 Ko), mais le souci d'utiliser quelque chose comme SlimDX est que je ne peux pas enlever les parties que je n'utilise pas. Cependant, plus j'y réfléchis, plus je me demande pourquoi je n'utilise pas seulement OpenGL avec des hacks spéciaux. –

+0

Si vous êtes concerné par la taille, alors P/Invoke est * le * chemin à parcourir en général. Essayez-vous de faire * tout * sous 64K (y compris le code et les ressources, etc.)? – MusiGenesis

+0

Oui, entièrement dans les 64k. Le problème avec P/Invoke for DX est que les interfaces ne se prêtent pas bien à P/Invoked. En fait, je ne suis pas certain que vous pouvez/P/Invoke sans avoir une sorte de code non géré pour gérer les VTables. –

0

Vous devrez aller avec P/Invoke et le trouverez probablement trop lent (certaines structures de données P/Invoke très lentement).

+0

Oui, c'est une de mes préoccupations. Je suppose qu'il y a la possibilité d'émettre des wrappers non gérés à l'exécution. –

+0

Il y a. C'est à ça que servent les assemblages en mode mixte. – Joshua

+0

Eh bien non, le problème avec les assemblages en mode mixte est que vous ne pouvez pas enlever ce que vous ne voulez pas - c'est pourquoi SlimDX n'est pas bon. Je pourrais bien sûr faire tout cela à la main, mais c'est beaucoup plus difficile. C'est comme si OGL allait me sauver beaucoup de temps et d'espace. –

0

Il existe le gestionnaire directx géré (MDX) que Microsoft a livré avec le directx sdk pendant un certain temps. Il est maintenant considéré comme obsolète et non supporté mais cela ne veut pas dire que ça ne marche pas ... Pour être honnête je ne sais pas grand-chose à ce sujet ou si ça conviendra à votre application mais ça vaut le coup d'oeil.

0

Je viens de trouver (tout en cherchant des façons d'utiliser DirectX à partir de code managé et WPF en particulier) sur SharpDX. Il semble prometteur et fait ce que vous avez besoin, voir par exemple Official Release of SharpDX entrée de blog.

Pourtant, je ne l'ai même pas encore téléchargé, donc je suis incapable de dire quoi que ce soit de plus que ce qui est écrit sous les liens ci-dessus.