概述:弄清楚了ID3D11DeviceContext的相关方法,至少会对D3D渲染的流程有个比较清楚的认识,以及对其相关的数据存储有一定的了解。但是目前对数据的存储过程还不太了解。
下面这个图就是这个类的真实写照,也是整个D3D的渲染流程。
程序的标志位: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 :清除访问资源的无序位的精确值。
所有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 :数组绑定的视光栅化阶段的管道。