2009-07-16 10 views
0

Je fais C# interop avec Direct3D (je sais à propos de SlimDX et XNA alors n'allons pas dans les mérites de cela) et j'appelle D3DX10CreateMesh en passant mon interface ID3DX10Mesh. Je reçois une erreur disant "Aucune interface supportée (Exception de HRESULT: 0x80004002 (E_NOINTERFACE))". L'appel D3DX10CreateMesh vient alors que j'essaie de créer un maillage de 10 pour copier un maillage 9 (après avoir chargé un fichier x). J'ai regardé ma définition C# de l'ID3DX10Mesh et il suit la même structure que toutes les autres interfaces de travail que j'ai définies. Mais ensuite j'ai remarqué quelque chose. Les guids pour les mailles 9 et 10 sont exactement les mêmes (4020E5C2-1403-4929-883F-E2E849FAC195). J'ai vérifié les en-têtes d3dx9mesh et d3dx10mesh et c'est le cas. L'interface 9 mesh fonctionne mais pas les 10 (Cela dépend peut-être de l'ordre d'instanciation) Personnellement, je ne comprends pas cela car cela impliquerait que même dans les applications C/C++, vous ne pouvez pas utiliser les deux maillages ensemble, mais nous savons Que tu peux. Je l'ai vu fait dans NVUT SDK. Je ne peux que penser que le Runtime Callable Wrapper est confus par les Guids? Pourquoi le maillage est-il le même et comment les applications C/C++ peuvent-elles éviter le conflit?ID3DX10Mesh et ID3DXMesh Guids EXACTEMENT le même

Répondre