概述:弄清楚了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 :清除访问资源的无序位的精确值。
- void ClearDepthStencilView(
- [in] ID3D11DepthStencilView *pDepthStencilView,
- [in] UINT ClearFlags,
- [in] FLOAT Depth,
- [in] UINT8 Stencil
- );
所有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 :数组绑定的视光栅化阶段的管道。
分享到:
相关推荐
net.sourceforge.groboutils.groboutils-core:5, 亲测可用
rdma-core/irdma: Implement device supported verb APIs
赠送jar包:grpc-core-1.24.0.jar; 赠送原API文档:grpc-core-1.24.0-javadoc.jar; 赠送源代码:grpc-core-1.24.0-sources.jar; 赠送Maven依赖信息文件:grpc-core-1.24.0.pom; 包含翻译后的API文档:grpc-core-...
Oracle.Core:Essential.Internals.for.DBAs.and.Developers
FXyz3D Core的使用 FXyz3D具有许多不同的3D自定义形状。 以下示例利用SpringMesh创建弹簧的3D网格。 样本 创建一个gradle项目,编辑build.gradle文件并添加: plugins { id 'application' id 'org.openjfx....
C# 7 and .NET Core: Modern Cross-Platform Development - Second Edition by Mark J. Price English | 24 Mar. 2017 | ASIN: B01N8UG78Q | 594 Pages | AZW3 | 23.26 MB Modern Cross-Platform Development ...
Telcordia GR-63-CORE:2012(Issue 4 ) NEBS Requirements:Physical Protection - 完整英文电子版(190页).zip
Core3D是用于开发强大的3D可视化和仿真应用程序的轻量级框架。 Core3D库提供了加快应用程序开发的结构和组织。 紧密耦合或相互关联的功能分为几组。 这些小组确保将关注点分离。 例如,场景的形状和视觉特征的描述与...
pythonocc-core 关于 pythonocc提供3D建模和数据交换功能。 它旨在与CAD / PDM / PLM和BIM相关的开发。 最新版本: 特征 pythonocc提供以下功能: 从Python到几乎所有数千个OpenCascade C ++类的完整访问。 类和...
Bellcore GR-454-CORE:1997(Issue 1) Generic Requirements for Supplier-Provided Documentation - 完整英文版(230页).zip
swagger导出文档所需的jar ... mvn install:install-file -DgroupId=ch.netzwerg -DartifactId=paleo-core -Dversion=0.10.2 -Dpackaging=jar -Dfile=C:\Users\lizz\Downloads\paleo-core-0.10.2.jar
赠送jar包:httpcore-4.4.13.jar; 赠送原API文档:httpcore-4.4.13-javadoc.jar; 赠送源代码:httpcore-4.4.13-sources.jar; 赠送Maven依赖信息文件:httpcore-4.4.13.pom; 包含翻译后的API文档:...
java jar包 javax.media:jai_core:1.1.3.jar 用于maven下载不下来。。。
核心3D Core3D 是用 Objective-C 编写的自定义 3D 引擎,为游戏 CoreBreach 提供动力
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped g++/gcc都不能编译了,一直抱ld的问题。网上找了很多方法都不行,弄了好久终于搞定了
依赖 <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core <version>2.2.0-SNAPSHOT </dependency>
赠送jar包:httpcore-4.4.14.jar; 赠送原API文档:httpcore-4.4.14-javadoc.jar; 赠送源代码:httpcore-4.4.14-sources.jar; 赠送Maven依赖信息文件:httpcore-4.4.14.pom; 包含翻译后的API文档:...
赠送jar包:httpcore-4.4.10.jar; 赠送原API文档:httpcore-4.4.10-javadoc.jar; 赠送源代码:httpcore-4.4.10-sources.jar; 赠送Maven依赖信息文件:httpcore-4.4.10.pom; 包含翻译后的API文档:...
赠送jar包:jackson-core-2.7.3.jar; 赠送原API文档:jackson-core-2.7.3-javadoc.jar; 赠送源代码:jackson-core-2.7.3-sources.jar; 赠送Maven依赖信息文件:jackson-core-2.7.3.pom; 包含翻译后的API文档:...
赠送jar包:assertj-core-3.21.0.jar; 赠送原API文档:assertj-core-3.21.0-javadoc.jar; 赠送源代码:assertj-core-3.21.0-sources.jar; 赠送Maven依赖信息文件:assertj-core-3.21.0.pom; 包含翻译后的API文档...