初始化D3D:
一、获得一个IDirect3D9接口指针。这个接口指针用于获得物理设备的信息和创建一个IDirect3DDevice9接口
IDirect3D9 * Direct3DCreate9(
UINT SDKVersion // 总是D3D_SDK_VERSION
);
// Direct3DCreate9(MSDN)
二、检查设备的技术特性(D3DCAPS9),搞清楚主显示卡是否支持硬件顶点处理。我们需要知道假如它能支持,我们就能创建IDirect3DDevice9接口
HRESULT GetDeviceCaps(
UINT Adapter, // 指定要获得哪个显示适配器的特性
D3DDEVTYPE DeviceType, // 指定设备类型(硬件设备(D3DDEVTYPE_HAL),软件设备(D3DDEVTYPE_REF))
D3DCAPS9 * pCaps // 返回一个已初始化的D3DCAPS9结构
);
// IDirect3D9::GetDeviceCaps(MSDN)
三、初始化一个D3DPRESENT_PARAMETERS结构实例,它允许我们指定将要创建的IDirect3DDevice9接口的特性
typedef struct D3DPRESENT_PARAMETERS {
UINT BackBufferWidth;
UINT BackBufferHeight;
D3DFORMAT BackBufferFormat;
UINT BackBufferCount;
D3DMULTISAMPLE_TYPE MultiSampleType;
DWORD MultiSampleQuality;
D3DSWAPEFFECT SwapEffect;
HWND hDeviceWindow;
BOOL Windowed;
BOOL EnableAutoDepthStencil;
D3DFORMAT AutoDepthStencilFormat;
DWORD Flags;
UINT FullScreen_RefreshRateInHz;
UINT PresentationInterval;
} D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;
// D3DPRESENT_PARAMETERS(MSDN)
四、创建基于D3DPRESENT_PARAMETERS结构实例的IDirect3DDevice9对象,它代表我们显示3D图形的物理设备的C++对象
HRESULT CreateDevice(
UINT Adapter, // 指定对象要表示的物理显示设备
D3DDEVTYPE DeviceType, // 设备类型
HWND hFocusWindow, // 与设备相关的窗口句柄
DWORD BehaviorFlags, // 设定为D3DCREATE_SOFTWARE_VERTEXPROCESSING或者D3DCREATE_HARDWARE_VERTEXPROCESSING
D3DPRESENT_PARAMETERS * pPresentationParameters, // 指定一个初始化好的D3DPRESENT_PARAMETERS实例
IDirect3DDevice9 ** ppReturnedDeviceInterface // 返回创建的设备
); // IDirect3D9::CreateDevice(MSDN)
(DotScylla) |