`

core:ID3D11DeviceChild和子

 
阅读更多

 

core的类图关系:父--->子

ID3D11DeviceChild---->ID3D11Asynchronous--->ID3D11Query--->ID3D11Predicate

ID3D11DeviceChild---->ID3D11Asynchronous--->ID3D11Counter

ID3D11DeviceChild---->ID3D11BlendState,ID3D11CommandList,ID3D11DepthStencilState,

ID3D11DeviceContext,ID3DDeviceContextState,ID3D11SamplerState,ID3D11RasterizerState,

ID3D11InputLayout

 

ID3D11DeviceChild :所有数据的父,你可以认为继承了它相当于拥有了数据特性。它拥有两个能力:

1.获取ID3D11Device对象  GetDevice

2.保存数据:GetPrivateDataSetPrivateData

 

Cpp代码   收藏代码
  1. static const char c_szName[] = "My name";  
  2. hr = pContext->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );  

 

数据相关:

ID3D11Asynchronous :它用一个方法:GetDataSize 它的子代表着一个集合,存储数据的集合,想想看只有集合需要获取数据的长度。

 

ID3D11Query :它的成员方法没啥意思,就一个方法GetDesc。有意思的是它的用法:

 

Java代码   收藏代码
  1. D3D11_QUERY_DESC queryDesc;  
  2. ... // Fill out queryDesc structure  
  3. ID3D11Query * pQuery;  
  4. pDevice->CreateQuery(&queryDesc, &pQuery);  
  5. pDeviceContext->Begin(pQuery);  
  6.   
  7. ... // Issue graphics commands  
  8.   
  9. pDeviceContext->End(pQuery);  
  10. UINT64 queryData; // This data type is different depending on the query type  
  11.   
  12. while( S_OK != pDeviceContext->GetData(pQuery, &queryData, sizeof(UINT64), 0) )  
  13. {  
  14. }  

 它能够获取某区间的数据。

 

ID3D11Predicate :(未知)

 

ID3D11Counter :它的用法跟ID3D11Query一样,只不过它是用来获取计数器的,主要用于对性能的检测。

 

 

设置状态相关:

ID3D11BlendState :此接口用于混合阶段,对混合的方式进行描述。

ID3D11DepthStencilState :创建深度缓存的时候,对深度缓存的方式进行描述。

ID3DDeviceContextState :对上下文的状态进行描述,次接口没有方法,全部依靠父类。

ID3D11SamplerState :采样器相关的状态描述,这里的采样是对纹理的采样,而不是多重采样 - -。

ID3D11RasterizerState :光栅化程序状态的描述。

1.创建:(都是由ID3DDevice对象进行创建)

 

Cpp代码   收藏代码
  1. HRESULT CreateRasterizerState(  
  2.   [in]   const D3D11_RASTERIZER_DESC *pRasterizerDesc,  
  3.   [out]  ID3D11RasterizerState **ppRasterizerState  
  4. );  

 2.使用:(都是对ID3DDeviceContext对象的一些状态进行设置,当然了有些状态也可以进行获取)

 

Cpp代码   收藏代码
  1. void RSSetState(  
  2.   [in]  ID3D11RasterizerState *pRasterizerState  
  3. );  

 注:有些状态是设置给着色器的,那么它就会被不只一个方法给用到。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics