core:ID3D11Device

 

ID3D11Device和ID3D11DeviceContext ,由于D3D要搞多线程,所以涉及到一个线程安全的问题。为解决这个问题,原来的一个类现在变成了两个,ID3D11Device是线程安全的,因为它只是检索显卡的能力和创建一些资源,而不涉及具体的渲染过程。ID3D11DeviceContext 是线程不安全的,一般多线程的话会存在多个这个对象。DeviceContext有两种类型的,一种是Deferred延迟型的,一种是立即型的

 

1.性能检测相关:

CheckCounter :获取的类型,名称,计量单位,和现有的计数器的描述。

CheckCounterInfo :获取一个计数器信息。

CreateCounter :建立测量GPU的性能计数器对象。

用于测量GPU的功耗情况的API

 

2.设备能力相关:

GetFeatureLevel :获取功能的硬件设备。

CheckFeatureSupport :获取当前的图形驱动程序支持的功能的信息。例如,多线程,双精度之类的。

Java代码    收藏代码
  1. HRESULT CheckFeatureSupport(  
  2.   [in]   D3D11_FEATURE Feature,  // 需要验证的特性,可传参数:<strong style="color: #454545; font-size: 14px; line-height: 20px; white-space: normal;"><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ff476124(v=vs.85).aspx" style="text-decoration: none; color: #1570a6 !important;"><strong>D3D11_FEATURE</strong></a></strong>  
  3.   [out]  void *pFeatureSupportData, // 如果通过,会还回一个与1对应的结构体,来描述当前支持的状态  
  4.   [in]   UINT FeatureSupportDataSize // 参数2的size值  
  5. );  

这个方法最主要的是你得熟悉它,你得知道你想验证什么特性。 

CheckFormatSupport :获取给定的格式上安装的视频设备的支持,跟9的caps有点像。

CheckMultisampleQualityLevels :检测多重采样的能力。

GetCreationFlags :在调用期间创建的移动设备与D3D11CreateDevice获取使用的标志。

 

3.数据相关:

CreateQuery :创建一个ID3D11Query对象,此对象封装了跟数据相关的查询内容。

GetPrivateData :获取应用程序定义的数据从一个设备

CreatePredicate :创建一个谓词。(暂时不清楚)

SetPrivateData :设置数据到一个设备的GUID关联的数据。

SetPrivateDataInterface :这个设备子联营公司的IUnknown派生的接口,该接口相关联的应用程序定义的GUID。

 

4.着色器相关:

CreateTexture1D :创建一个数组的1D纹理

CreateTexture2D :创建一个数组的2D纹理

CreateTexture3D :建立一个单一的3D纹理

CreateBuffer :创建一个缓冲区(顶点缓冲,索引缓冲,或着色常数缓冲),会比较熟悉。

Cpp代码    收藏代码
  1. HRESULT CreateBuffer(  
  2.   [in]             const D3D11_BUFFER_DESC *pDesc,    
  3.   [in, optional]   const D3D11_SUBRESOURCE_DATA *pInitialData,   
  4.   [out, optional]  ID3D11Buffer **ppBuffer  
  5. );  

具体用法参考:如何: 创建顶点缓冲区如何: 创建索引缓冲区如何: 创建一个恒定的缓冲区.

CreateClassLinkage :创建一流的连锁库启用动态着色器链接。(未知,用于动态绑定对象,貌似!)

CreateComputeShader :创建计算着色器,此着色器单元主要是用于在GPU中进行额外的计算,包括多线程。

CreateHullShader :建立一个船体着色器

CreateDomainShader :创建一个域着色器 ,这两个着色器用于Tessellator细分曲面技术。

CreateGeometryShader :创建一个几何着色器。

CreateGeometryShaderWithStreamOutput :创建一个几何着色器可以写入流输出缓冲区。

CreateVertexShader :创建一个对象从已编译的着色器顶点着色器。

CreatePixelShader :创建像素着色器。

Cpp代码    收藏代码
  1. HRESULT CreateComputeShader(  
  2.   const void *pShaderBytecode,  
  3.   SIZE_T BytecodeLength,  
  4.   ID3D11ClassLinkage *pClassLinkage,  
  5.   ID3D11ComputeShader **ppComputeShader  
  6. );  

所有的着色器创建的方法都是类似结构,这似乎也预示着未来它们有整合到一起的命运

 

5.驱动上下文相关:

CreateDeferredContext :创建一个延迟的情况下,它可以记录命令列表。

GetImmediateContext :获取即时的情况下,可以播放命令列表。为啥不是创建,因为只有一个。

CreateInputLayout :创建一个ID3D11InputLayout对象,这个对象用于描述输入时的数据结构的。

 

6.状态相关:

CreateRasterizerState :创建一个光栅化状态的对象,告诉光栅化阶段如何做,光栅化阶段

CreateSamplerState :创建一个采样状态对象封装纹理采样信息,主要用于纹理处理阶段

CreateDepthStencilState :创建一个深度模版的状态对象,它封装深度模板测试信息的输出合并阶段。

CreateBlendState :创建一个混合状态的的对象,用于确定如何混合在一起的两个 RGB 像素值和两个的 alpha 值。

Cpp代码    收藏代码
  1. HRESULT CreateBlendState(  
  2.   [in]   const D3D11_BLEND_DESC *pBlendStateDesc, // 描述混合状态的结构体,作为输入  
  3.   [out]  ID3D11BlendState **ppBlendState // 混合状态对象  
  4. );  

 这里创建的只是混合状态,真正用到是在这里:ID3D11DeviceContext::OMGetBlendState

 

7.视图相关:

CreateDepthStencilView :创建一个用于访问资源数据的深度模版。

CreateRenderTargetView :创建一个渲染目标视图中访问资源数据。

CreateShaderResourceView :创建一个着色器资源视图访问数据的资源。

CreateUnorderedAccessView :创建一个用于访问一个无序的访问资源。

OpenSharedResource :给一个设备接入到不同的设备上创建一个共享的资源。


8.其他:

GetDeviceRemovedReason :获取设备已删除的原因。

GetExceptionMode :获取异常模式的标志。

SetExceptionMode :获取异常模式的标志。

你可能感兴趣的:(device)