Direct3D 11的Device接口和DeviceContext接口
2013-07-28 20:36
661 查看
D3D的两个主要的接口:
Device,ID3D11Device。创建资源,Shader对象,状态对象,查询对象,等。以及检查硬件功能,调试函数。可以认为是资源的提供者。
Device Context,ID3D11DeviceContext。使用资源。绑定资源,Shader对象,状态对象等到流水线。以及控制计算流水器的执行。
Immedite context。立即模式,用于主渲染线程,也是服务GPU的主要接口
Deffered context。延迟模式,提供线程安全机制,用于异步线程模型。
创建[b]Device和Context:[/b]
创建Device可以用 D3D11CreateDevice函数 或 D3D11CreateDeviceAndSwapChain函数。区别是后者还可以创建swap chain和返回context,所以优先用后者。
D3D11CreateDeviceAndSwapChain的参数用法如下:
*pAdapter: 指向显卡适配器,NULL则使用默认的显卡。
DriverType:指定驱动类型。值可以是:
D3D_DRIVER_TYPE_UNKNOWN,
D3D_DRIVER_TYPE_HARDWARE,一般用这个
D3D_DRIVER_TYPE_REFERNCE,用于软件实现的D3D
D3D_DRIVER_TYPE_NULL,用于测试
D3D_DRIVER_TYPE_SOFTWARE,自定义驱动,通常不用。
D3D_DRIVER_TYPE_WARP,支持使用多核CPU,但只能用于D3D 10.1。
software:如果DriverType选的不是software,这个参数就设置成NULL。
Flags:指定设备的特殊功能,可以是以下值的组合:
enum D3D11_CREATE_DEVICE_FLAG
{
D3D11_CREATE_DEVICE_SINGLETHREADED= 0x1, //必须是单线程的。如果不设置就是多线程的。
D3D11_CREATE_DEVICE_DEBUG= 0x2, //实现ID3D11Debug接口。
D3D11_CREATE_DEVICE_SWITCH_TO_REF= 0x4, //D3D11不支持此选项。
D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS= 0x8, //禁止多线程优化。
D3D11_CREATE_DEVICE_BGRA_SUPPORT= 0x20, //用于Direct2D
D3D11_CREATE_DEVICE_DEBUGGABLE= 0x40,
D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY= 0x80,
D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100,
D3D11_CREATE_DEVICE_VIDEO_SUPPORT= 0x800
} D3D11_CREATE_DEVICE_FLAG;
pFeatureLevels,指定要支持的D3D的功能级别。可以是以下值的组合:
D3D_FEATURE_LEVEL_11_1,
D3D_FEATURE_LEVEL_11_0,
D3D_FEATURE_LEVEL_10_1,
D3D_FEATURE_LEVEL_10_0,
D3D_FEATURE_LEVEL_9_3,
D3D_FEATURE_LEVEL_9_2,
D3D_FEATURE_LEVEL_9_1
SDKVersion,在D3D11中就使用 D3D11_SDK_VERSION
pSwapChainDesc,swap chain是DXGI创建的对象。此指针指向swap chain的描述,主要是swap chain的初始化属性。需要定义一个DXGI_SWAP_CHAIN_DESC结构体。
ppSwapChain,返回SwapChain。
ppDevice,返回Device。
pFeatureLevel,返回FeatureLevel。
ppImmediteContext,返回ImmediteContext。
Device,ID3D11Device。创建资源,Shader对象,状态对象,查询对象,等。以及检查硬件功能,调试函数。可以认为是资源的提供者。
Device Context,ID3D11DeviceContext。使用资源。绑定资源,Shader对象,状态对象等到流水线。以及控制计算流水器的执行。
Immedite context。立即模式,用于主渲染线程,也是服务GPU的主要接口
Deffered context。延迟模式,提供线程安全机制,用于异步线程模型。
创建[b]Device和Context:[/b]
创建Device可以用 D3D11CreateDevice函数 或 D3D11CreateDeviceAndSwapChain函数。区别是后者还可以创建swap chain和返回context,所以优先用后者。
D3D11CreateDeviceAndSwapChain的参数用法如下:
HRESULT D3D11CreateDeviceAndSwapChain( __in IDXGIAdapter *pAdapter, __in D3D_DRIVER_TYPE DriverType, __in HMODULE Software, __in UINT Flags, __in const D3D_FEATURE_LEVEL *pFeatureLevels, __in UINT FeatureLevels, __in UINT SDKVersion, __in const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc, __out IDXGISwapChain **ppSwapChain, __out ID3D11Device **ppDevice, __out D3D_FEATURE_LEVEL *pFeatureLevel, __out ID3D11DeviceContext **ppImmediateContext ;
*pAdapter: 指向显卡适配器,NULL则使用默认的显卡。
DriverType:指定驱动类型。值可以是:
D3D_DRIVER_TYPE_UNKNOWN,
D3D_DRIVER_TYPE_HARDWARE,一般用这个
D3D_DRIVER_TYPE_REFERNCE,用于软件实现的D3D
D3D_DRIVER_TYPE_NULL,用于测试
D3D_DRIVER_TYPE_SOFTWARE,自定义驱动,通常不用。
D3D_DRIVER_TYPE_WARP,支持使用多核CPU,但只能用于D3D 10.1。
software:如果DriverType选的不是software,这个参数就设置成NULL。
Flags:指定设备的特殊功能,可以是以下值的组合:
enum D3D11_CREATE_DEVICE_FLAG
{
D3D11_CREATE_DEVICE_SINGLETHREADED= 0x1, //必须是单线程的。如果不设置就是多线程的。
D3D11_CREATE_DEVICE_DEBUG= 0x2, //实现ID3D11Debug接口。
D3D11_CREATE_DEVICE_SWITCH_TO_REF= 0x4, //D3D11不支持此选项。
D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS= 0x8, //禁止多线程优化。
D3D11_CREATE_DEVICE_BGRA_SUPPORT= 0x20, //用于Direct2D
D3D11_CREATE_DEVICE_DEBUGGABLE= 0x40,
D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY= 0x80,
D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100,
D3D11_CREATE_DEVICE_VIDEO_SUPPORT= 0x800
} D3D11_CREATE_DEVICE_FLAG;
pFeatureLevels,指定要支持的D3D的功能级别。可以是以下值的组合:
D3D_FEATURE_LEVEL_11_1,
D3D_FEATURE_LEVEL_11_0,
D3D_FEATURE_LEVEL_10_1,
D3D_FEATURE_LEVEL_10_0,
D3D_FEATURE_LEVEL_9_3,
D3D_FEATURE_LEVEL_9_2,
D3D_FEATURE_LEVEL_9_1
SDKVersion,在D3D11中就使用 D3D11_SDK_VERSION
pSwapChainDesc,swap chain是DXGI创建的对象。此指针指向swap chain的描述,主要是swap chain的初始化属性。需要定义一个DXGI_SWAP_CHAIN_DESC结构体。
ppSwapChain,返回SwapChain。
ppDevice,返回Device。
pFeatureLevel,返回FeatureLevel。
ppImmediteContext,返回ImmediteContext。
相关文章推荐
- Direct3D 11的Device接口和DeviceContext接口
- Direct3D 11的Device接口和DeviceContext接口
- DirectX 11 编程指南 - Direct3D Device 简介
- 微信硬件蓝牙jsapi开发之sendDataToWXDevice接口和onReceiveDataFromWXDevice接口(11)
- 【DirectX 11 SDK 学习笔记】Direct3D 11 Basics
- WINDOW API基本屏幕绘图(GDI Graphics Device Interface 图像设备接口)
- 使用HD/IDE layer的ioctl接口获取磁盘详细信息device_identify
- 友盟推送注册失败,无法获取devicetoken,错误码-11,-9
- Direct3D 11的流水线
- 11) 为STL容器和数组提供统一的接口DataSet [原创,泛型编程,自由下载转载,需注明出处]
- Direct3D 11 学习笔记(一)
- Wine 3.0 发布,支持 Android 图形驱动、Direct3D 11 | Linux 中国
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
- DEVICE_ATTR() 与 sysfs接口
- Direct3D 11教程2:绘制一个三角形
- Direct3D 11的资源
- Android中HAL如何向上层提供接口总结-hw_device_t
- thinking in java test chapter9接口(11)~(19)适配器模式,工厂模式
- 【drp 11】使用Junit简单测试接口方法
- 基本概念学习之GDI(图形设备接口Graphics Device Interface)