Я делаю взаимодействие C # с Direct3D (я знаю о SlimDX и XNA, поэтому давайте не будем вдаваться в достоинства этого), и я вызываю D3DX10CreateMesh, передавая ему мой интерфейс ID3DX10Mesh. Я получаю сообщение об ошибке: «Такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE))». Вызов D3DX10CreateMesh происходит, когда я пытаюсь создать 10 меш, чтобы скопировать 9 меш (после успешной загрузки файла x). Я посмотрел мое определение C3 ID3DX10Mesh, и оно соответствует той же структуре, что и любой другой рабочий интерфейс, который я определил.
Но потом я кое-что заметил. Направляющие для 9 и 10 ячеек точно одинаковы (4020E5C2-1403-4929-883F-E2E849FAC195). Я дважды проверил заголовки d3dx9mesh и d3dx10mesh, и это так. Интерфейс из 9 ячеек работает, а 10 - нет (возможно, это зависит от порядка реализации). Я лично не понимаю этого, поскольку это подразумевает, что даже в приложениях C / C ++ вы не можете использовать две сетки вместе, но мы знаем что ты можешь. Я видел это сделано в NVUT SDK. Я могу только думать, что Runal Callable Wrapper сбивается с толку Guids?
Почему направляющие сетки одинаковы и как приложения на C / C ++ могут избежать конфликта?