Is there a COM impact for Direct3D 10
Ladies and gentlemen.
I posted this question on the COM forum on the Code Project and got a snotty response, so hopefully you will be more helpful.
I can see Microsoft has a COM library for Direct3D 9 open with GUID 81BDCBCA-64D4-426d-AE8D-AD0147F4275C.
Microsoft has opened Direct3D 10 on COM, and if so, what is the GUID of the interface?
Thanks in advance.
From the MSDN documentation, it looks like they have moved from the IDirect3D9 object with member functions like IDirect3D9 :: CreateDevice to use global functions like D3D10CreateDevice . With Direct3D 10, they have shared many of the features that were in IDirect3D9 related to (for example) adapters in the DirectX Graphics Infrastructure (DXGI) .
In other words, Direct3D 10 still uses COM, but no, there is no IDirect3D9 equivalent. The things you used to do with IDirect3D9 are now done with different means.
Edit: The COM class with the specified GUID is IDirect3D9. Direct3D 10 does not have an updated version of this (no IDirect3D10, which does what IDirect3D9 does); instead, the member functions of this class have been split into global functions (such as D3D10CreateDevice ), which you call directly, rather than through an object, and into DXGI classes (such as IDXGIOutput ). You do not need an IDirect3D10 object because the tasks for which you used it are performed differently.
You should be able to map GUIDs to COM class names by looking at the Direct3D header files for the DEFINE_GUID macro.
a source to share
In COM, the library information you are requesting is encoded in a type library (TLB file). Direct3D hasn't used a type library or CoCreateInstance for any of its objects since DirectX 8.0, almost ten years ago. Direct3D uses COM interfaces to manage the lifetime of its objects and about that. They don't use QueryInterface at all. Most of the COM infrastructure does not apply to the interfaces used by Direct3D and related objects.
They don't use CoCreateInstance to create their objects, but instead provide a single factory function (like Direct3DCreate9) from which you get the base interface, and then use the creator methods from that base interface to get the rest. In Direct3D 10, they recognized that the base interface that lists displays and so on was stable and the same for D3D 8 and D3D 9, so they migrated it to the stable base IDXGIFactory interface. The same DXGI code is used for D3D 10, 10.1 and 11.
a source to share