DirectX 11 学习笔记(2)- 创建ID3D11Device和ID3D11DeviceContext

D3D初始化步骤:

1.使用D3D11CreateDevice方法创建ID3D11DeviceID3D11DeviceContext
2.使用ID3D11Device::CheckMultisampleQualityLevels方法检测设备支持的4X多重采样质量等级
3.填充一个IDXGI_SWAP_CHAIN_DESC结构体,该结构体描述了所要创建的交换链的特性。
4.查询IDXGIFactory实例,这个实例用于创建设备和一个IDXGISwapChain实例
5.为交换链的后台缓冲区创建一个渲染目标视图。
6.创建深度缓冲区以及相关的深度视图
7.将渲染目标视图和深度视图绑定到渲染管线的输出合并阶段,使它们可以被D3D使用
8.设置视口

ID3D11Device 接口用于检测显示适配器功能和分配资源
ID3D11DeviceContext 接口用于设置管线状态、将资源绑定到图形管线和生成渲染命令

HRESULT   D3D11CreateDevice(
IDXGIAdapter				    *pAdapter,
D3D_DRIVER_TYPE 				DriverType,
HMODULE 						Software,
UINT 							Flags,
CONST D3D_FEATURE_LEVEL 		*pFeatureLevels,
UNIT 							FeatureLevels,
UINT 							SDKVersion,
ID3D11Device 					**ppDevice,
D3D_FEATURELEVEL 				*pFeatureLevel,
ID3D11DeviceContext 			**ppImmediateContext
);

参数说明:
1.pAdapter:指定要为哪个物理显卡创建设备对象。当该参数设为空值时,表示使用主显卡。

2.DriverType:一般来讲,该参数总是指定为 D3D_DRIVER_TYPE_HARDWARE ,表示使用3D硬件来加快渲染速度。但是,也可以有两个其他选择:
    D3D_DRIVER_TYPE_REFERENCE:创建所谓的引用设备(referencedevice)。引用设备是Direct3D的软件实现,它具有Direct3D的所有功能(只是运行速度非常慢,因为所有的功能都是用软件来实现的)。引用设备随DirectXSDK一起安装,只用于程序员,而不应该用于程序发布。使用引用设备有两个原因:测试硬件不支持的代码;例如,在一块不支持Direct3D11的显卡上测试一段Direct3D11的代码。测试驱动程序缺陷。当代码能在引用设备上正常运行,而不能在硬件上正常工作时,说明硬件的驱动程序可能存在缺陷。
    D3D_DRIVER_TYPE_SOFTWARE:创建一个用于模拟3D硬件的软件驱动器。要使用软件驱动器,你必须自己创建一个,或使用第三方的软件驱动器。与下面要说的WARP驱动器不同,Direct3D不提供软件驱动器。

3.Software:用于支持软件光栅化设备(softwarerasterizer)。我们总是将该参数设为空值,因为我们使用硬件进行渲染。如果读者想要使用这一功能,那么就必须先安装一个软件光栅化设备。

4.Flags:可选的设备创建标志值。当以release模式生成程序时,该参数通常设为0(无附加标志值);当以debug模式生成程序时,该参数应设为:D3D11_CREATE_DEVICE_DEBUG用以激活调试层。

5.pFeatureLevels:D3D_FEATURE_LEVEL数组,元素的顺序表示要特征等级的测试顺序。将这个参数设置为null表示选择可支持的最高等级。

6.FeatureLevels:pFeatureLevels数组中的元素D3D_FEATURE_LEVELs的数量,若pFeatureLevels设置为null,则这个值为0。

7.SDKVersion:始终设为D3D11_SDK_VERSION。

8.ppDevice:返回创建后的设备对象。

9.pFeatureLevel:返回pFeatureLevels数组中第一个支持的特征等级(如果pFeatureLevels为null,则返回可支持的最高等级)。

10.ppImmediateContext:返回创建后的设备上下文。

你可能感兴趣的:(D3D11)