私は Direct3D との C# 相互運用を行っています (SlimDX と XNA については知っているので、これのメリットには触れません)。ID3DX10Mesh インターフェイスを渡して D3DX10CreateMesh を呼び出しています。「そのようなインターフェイスはサポートされていません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))」というエラーが表示されます。D3DX10CreateMesh 呼び出しは、10 メッシュを作成して 9 メッシュをコピーしようとしているときに発生します (x ファイルを正常にロードした後)。ID3DX10Mesh の C# 定義を調べたところ、定義した他のすべての作業インターフェイスと同じ構造に従っています。
しかし、その後、あることに気がつきました。9 メッシュと 10 メッシュの Guid はまったく同じです (4020E5C2-1403-4929-883F-E2E849FAC195)。d3dx9mesh ヘッダーと d3dx10mesh ヘッダーを再確認しましたが、これが当てはまります。9 メッシュ インターフェイスは機能しますが、10 は機能しません (これはインスタンス化の順序に依存する可能性があります)。これは、C/C++ アプリでも 2 つのメッシュを一緒に使用できないことを意味するため、個人的には理解できませんが、あなたができること。私はそれが NVUT SDK で行われているのを見てきました。Runtime Callable Wrapper が Guid によって混乱しているとしか思えませんか?
メッシュ GUID が同じなのはなぜですか? C/C++ アプリはどのようにして競合を回避できますか?