IDirect3D9Ex 接口是 Direct3D 9Ex 图形 API 的核心接口,它在 IDirect3D9 接口的基础上提供了一些额外的功能,例如在窗口化应用程序中共享资源以及更好地支持多线程操作。以下是 IDirect3D9Ex 接口的定义:
interface IDirect3D9Ex : public IDirect3D9
{
public:
    virtual UINT STDMETHODCALLTYPE GetAdapterModeCountEx(UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter) = 0;
    virtual HRESULT STDMETHODCALLTYPE EnumAdapterModesEx(UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter, UINT Mode, D3DDISPLAYMODEEX *pMode) = 0;
    virtual HRESULT STDMETHODCALLTYPE GetAdapterDisplayModeEx(UINT Adapter, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation) = 0;
    virtual HRESULT STDMETHODCALLTYPE CreateDeviceEx(UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS *pPresentationParameters, D3DDISPLAYMODEEX *pFullscreenDisplayMode, IDirect3DDevice9Ex **ppReturnedDeviceInterface) = 0;
    virtual HRESULT STDMETHODCALLTYPE GetAdapterLUID(UINT Adapter, LUID *pLUID) = 0;
};

IDirect3D9Ex 接口继承自 IDirect3D9 接口,因此它包含了 IDirect3D9 接口的所有方法,同时还添加了一些额外的方法。以下是一些 IDirect3D9Ex 接口新增的方法:

  •  GetAdapterModeCountEx: 获取特定适配器上支持的显示模式数量(扩展版本)。

  •  EnumAdapterModesEx: 枚举适配器上的显示模式(扩展版本)。

  •  GetAdapterDisplayModeEx: 获取适配器的当前显示模式(扩展版本)。

  •  CreateDeviceEx: 创建 Direct3D 设备(扩展版本)。

  •  GetAdapterLUID: 获取适配器的本地唯一标识符(LUID)。


这些新增方法使得 IDirect3D9Ex 在功能上更加强大,尤其是对于多显示器和窗口化应用程序。在使用完后,同样需要调用 Release 方法释放对象。如果系统支持 Direct3D 9Ex,可以通过 Direct3DCreate9Ex 函数创建一个 IDirect3D9Ex 对象。


转载请注明出处:http://www.zyzy.cn/article/detail/26224/Win32 API/D3d9.h/IDirect3D9Ex