`

core:ID3D11DeviceContext相关

 
阅读更多

 

概述:弄清楚了ID3D11DeviceContext的相关方法,至少会对D3D渲染的流程有个比较清楚的认识,以及对其相关的数据存储有一定的了解。但是目前对数据的存储过程还不太了解。

 

下面这个图就是这个类的真实写照,也是整个D3D的渲染流程。

 

Diagram of DrawAuto as data moves through several stages to a buffer and then back to the Input Assembler stage

 

程序的标志位:C++里面喜欢这种方式,搞的像大括号一样,但是为啥要有参数

Begin :马克开始了一系列的命令。

End :结束标志的一系列命令。

Dispatch :从一个线程组中执行一个命令列表。计算机着色器相关。

DispatchIndirect :执行命令列表中一个或多个线程组。

ExecuteCommandList :的队列命令从命令列表到设备上。

FinishCommandList :创建一个命令列表,并把它记录图形命令。

 

绘制根据顶点缓存或索引缓存

Draw :绘制顶点列表,传入绘制个数和偏移量。

DrawAuto :绘制几何形状,大小未知。

DrawIndexed :绘制索引,非实例化的原语。

DrawIndexedInstanced :绘制索引,实例化的原语。

DrawIndexedInstancedIndirect :绘制索引,实例化,GPU生成的基元。

DrawInstanced :绘制非索引,实例化的原语。

DrawInstancedIndirect :绘制实例,GPU生成的基元。

 

驱动上下文需要用到的其他数据:

GenerateMips :传入一个ID3D11ShaderResourceView对象,根据此对象生成它的mipmap。

GetContextFlags :获取此驱动上下文的初始化标志。

GetData :以异步方式从图形处理单元 (GPU) 获取数据。

GetType :获取设备上下文的类型。

Map :获取一个指针中子资源,, 包含的数据,否认对这子资源的 GPU 访问。

Unmap :无效的指针指向的资源,并重新启用GPU的访问该资源。

ResolveSubresource :将多级采样的资源复制到一个非多级采样的资源。

UpdateSubresource :CPU 将数据从内存复制到子在非可映射内存中创建的资源。

GetPredication :获取描述谓词状态的对象,如果不需要了,需要对其进行释放。

SetPredication :设置的渲染断言。

GetResourceMinLOD :获取最低-的-细节级别 (LOD)。

SetResourceMinLOD :设置的最低水平的细节(LOD)的资源。

 

清理各种资源:

ClearDepthStencilView :清除深度模版的资源。

ClearRenderTargetView :设置一个渲染目标中的所有元素为一个值。

ClearState :恢复所有默认设置。

Flush :发送排队的命令在命令缓冲区中的GPU。(尽量不使用,开支比较大,当需要强制销毁一些对象的时候使用,D3D有延迟销毁对象的毛病。)

ClearUnorderedAccessViewFloat :清除具有浮点值的无序访问资源。

ClearUnorderedAccessViewUint :清除访问资源的无序位的精确值。

Cpp代码   收藏代码
  1. void ClearDepthStencilView(  
  2.   [in]  ID3D11DepthStencilView *pDepthStencilView, // 要清理的对象  
  3.   [in]  UINT ClearFlags, // 状态位,是清理深度缓存,还是清理模板缓存  
  4.   [in]  FLOAT Depth, // 清理成这个值,深度缓存  
  5.   [in]  UINT8 Stencil // 清理成这个值,模板缓存  
  6. );  

所有clear方法都有类似特点,清除时指定两个东西,一是清楚的对象,二是清除成什么状态,把它们理解为复位比较好。

 

复制各种资源:

CopyResource :源资源的全部内容复制到目标资源使用GPU。

CopyStructureCount :复制数据从持有可变长度的数据缓冲区。

CopySubresourceRegion :从源资源区域复制到目标资源。

 

输入阶段:

IAGetIndexBuffer :获得一个指向索引缓冲区,也势必将输入汇编阶段。

IAGetInputLayout :获取一个指针,指向输入布局对象被绑定到输入汇编阶段。

IAGetPrimitiveTopology :获取信息的基本类型和数据顺序来描述的输入数据输入汇编阶段。

IAGetVertexBuffers :获取顶点缓冲区的输入汇编阶段的必然。

IASetIndexBuffer :索引缓冲区绑定到汇编器的输入阶段。

IASetInputLayout :输入布局对象绑定到汇编器的输入阶段。

IASetPrimitiveTopology :绑定信息的基本类型和数据顺序来描述的输入数据输入汇编阶段。

IASetVertexBuffers :顶点缓冲区数组绑定到汇编器的输入阶段。

 

计算着色器:

CSGetConstantBuffers :使用计算着色器阶段获得恒定的缓冲区。

CSGetSamplers :得到一个数组的接口,计算着色器采样器状态。

CSGetShader :计算着色器目前在设备上设置。

CSGetShaderResources :计算着色器资源。

CSGetUnorderedAccessViews :一个无序的资源获取一个数组的意见。

CSSetConstantBuffers :设置恒定的缓冲区所使用的计算着色器的阶段。

CSSetSamplers :设置一个数组,计算着色器阶段的采样状态。

CSSetShader :设置一个计算着色到该设备。

CSSetShaderResources :数组绑定的着色器资源的计算着色器阶段。

CSSetUnorderedAccessViews :设置一个数组,无序的资源的观点。

 

域着色器:

DSGetConstantBuffers :获得恒定的缓冲区所使用的域着色器阶段。

DSGetSamplers :采样状态数组的接口,域着色器阶段。

DSGetShader :目前在设备上设置的域着色器。

DSGetShaderResources :域着色器资源。

DSSetConstantBuffers :设置恒定缓冲区所使用的域着色器阶段。

DSSetSamplers :设置一个数组,域着色器阶段的采样状态。

DSSetShader :域着色器设置到设备。

DSSetShaderResources :数组绑定的着色器资源的域着色器阶段。

 

几何着色器:

GSGetConstantBuffers :使用几何着色器流水线阶段获得恒定的缓冲区。

GSGetSamplers :采样状态数组的接口,从几何着色器管线阶段。

GSGetShader :获取的几何着色器的移动设备上的当前设置。

GSGetShaderResources :几何着色器资源。

GSSetConstantBuffers :设置恒定的几何着色器管线阶段使用的缓冲区。

GSSetSamplers :设置一个数组的采样状态的几何着色器管线阶段。

GSSetShader :设置一个几何着色器的设备。

GSSetShaderResources :数组绑定的着色器资源的几何着色阶段。

 

船体着色器

HSGetConstantBuffers :所使用的在船体着色器阶段不断的缓冲区。

HSGetSamplers :采样在船体着色器阶段状态接口的阵列。

HSGetShader :目前在设备上设置的船体着色器。

HSGetShaderResources :船体着色器资源。

HSSetConstantBuffers :设置所使用的在船体着色器阶段不断的缓冲区。

HSSetSamplers :设置一个数组,在船体着色器阶段的采样状态。

HSSetShader :船体着色器设置到设备。

HSSetShaderResources :船体着色器阶段的数组绑定的着色器资源。

 

像素着色器:

PSGetConstantBuffers :使用像素渲染管线阶段获得恒定的缓冲区。

PSGetSamplers :从像素渲染管线阶段得到一个数组的采样状态。

PSGetShader :获取的像素着色引擎的移动设备上的当前设置。

PSGetShaderResources :像素着色器资源。

PSSetConstantBuffers :设置恒定的像素渲染管线阶段使用的缓冲区。

PSSetSamplers :设置一个数组的采样状态的像素渲染管线阶段。

PSSetShader :设置到设备的像素着色器。

PSSetShaderResources :着色器的资源的数组绑定到像素着色器级。

 

顶点着色器:

VSGetConstantBuffers :获得恒定的缓冲区所使用的顶点着色器管线阶段。

VSGetSamplers :获取数组的采样状态从顶点着色器流水线阶段。

VSGetShader :获取的顶点着色器的移动设备上的当前设置。

VSGetShaderResources :获取顶点着色器资源。

VSSetConstantBuffers :设置恒定的顶点渲染管线阶段所使用的缓冲区。

VSSetSamplers :设置一个数组的采样状态的顶点渲染管线阶段。

VSSetShader :设置的顶点着色器的设备。

VSSetShaderResources :数组绑定的着色器资源的顶点着色器阶段。

 

输出阶段:

OMGetBlendState :获取的输出合并阶段的混合状态。

OMGetDepthStencilState :获取深度模版的输出合并阶段的状态。

OMGetRenderTargets :获取指针的输出合并阶段的资源绑定。

OMGetRenderTargetsAndUnorderedAccessViews :获取指针的输出合并阶段的资源绑定。

OMSetBlendState :设置的输出合并阶段的混合状态。

OMSetDepthStencilState :设置深度模版的输出合并阶段的状态。

OMSetRenderTargets :绑定一个或多个渲染目标原子和深度模版缓冲器的输出合并阶段

OMSetRenderTargetsAndUnorderedAccessViews :绑定的资源,合并的输出的阶段。

SOGetTargets :获取的目标输出缓冲器的数据流的输出阶段的管道。

SOSetTargets :设定的目标输出缓冲器的数据流的输出阶段的管道。

 

光栅化阶段:

RSGetScissorRects :剪刀矩形阵列的绑定的光栅化阶段。

RSGetState :光栅化状态的光栅化阶段的管道。

RSGetViewports :获取数组绑定到光栅化阶段的视口。

RSSetScissorRects :数组绑定的剪刀矩形光栅化阶段。

RSSetState :设置光栅化状态的管道光栅化阶段。

RSSetViewports :数组绑定的视光栅化阶段的管道。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics