Practical Rendering and Computation with Direct3D 11学习笔记(2.1.2)

来源:互联网 发布:编程培训机构推荐 编辑:程序博客网 时间:2024/06/05 12:08

2.1.1资源视图

       我们在资源绑定标志中知道有8个资源绑定标志,其中有四个可以允许资源直接绑定到管线:

      其余四个需要借助资源视图来把资源绑定到管线,就如资源一样资源视图由自己的配置,它还能呈现一个资源的子集。一个资源可能有多个资源视图 。资源视图是一种适配器类型。
     由四种资源视图类型组成: 每一个资源视图提供许多不同的参数配置,而进一步规范资源视图的使用。
     
      
渲染目标视图:


       渲染目标视图(RTV),去匹配一个资源获得渲染管输出,这就是说被资源视图关联的资源被渲染管线写入,它将在某些情况下读取去执行混合操作。平常来说,一个渲染目标视图是一个二维纹理,但是它也能绑定其他资源。渲染目标视图的各种配置选项取决于被绑定资源的类型,但是包括DXGI格式的资源,也包括各种各样的方法去选择资源subportions去暴露管线。


深度模板视图:


     深度模板视图(DSV)与渲染目标视图类似,但是有不同之处,深度模板视图资源被用于深度及模板测试,为了提升显示精度深度模版视图公开增加标志去决定是否依附的资源将被写入或者不被写入。这允许资源依附于深度模板缓冲和用来进行深度模板测试,但是同时在着色程序中被使用为着色资源视图。在深度模板视图配置中,两种视图是只读的,意思就是说资源将不会被另为的修改。如此使用的话,相同的资源在多个地方能被绑定到管线而没有读写危害,这允许灵活使用资源。如果一个标准使用深度缓冲是需要的,第二资源视图能替代只读的去使允许写发生。
   
着色资源视图:

着色资源视图(SRV),提供了一个资源到管线可编程着色阶段的读权限。SRV相对于传统的规则一个纹理将在像素着色显示--在着色程序读取和使用的数据,但是不能写入。一个SRV能被不同的可编程着色器阶段使用。
无序接入视图:

无序接入视图(UAV)在Direct3D 11中为资源提供了一些有趣的新应用,像着色器资源视图一样,一个UAV能被用来从一个资源读取信息,但是它也允许资源在一样的着色程序中同时被写入。深入的话,输出位置不是预先确定的,这样允许着色程序去执行分散写入到资源的任何位置。这提供了一个完全新的资源存取类,因此它允许资源以更加灵活的方法被使用。需要注意的是UAV只能在像素着色器和计算着色器阶段。

资源视图创建:
       创建资源视图有时候类似创建一个资源得过程,ID3D11 Device 负责创建资源视图,ID3D11 Device为每种类型提供了一个创建方法,所有的创建方法遵循相似的模型--程序提供的三个不同调参数。例如:
ID3DllShaderResourceView*CreateShaderResourceView(ID3D11Resource*pResource.,
D3D11_SHADER_RES0URCE_VIEW_DESC* pDesc)
{
ID3DllShaderResourceView*pView = 0;
HRESULT hr = m_pDevice->CreateShaderResourceView( pResource,
pDesc, SpView );
return( pView );
}


第一个参数是一个指向资源的指针,资源视图将执行它,第二个参数是一个描述结构的指针,这个结构包含了资源视图所有的可用选项。第三个参数是指向对应资源视图类型指针的指针即**p,它是最近创建的资源视图储存的地方.描述结构是我们应该关注的,包含了我们所需的要求,四种资源视图拥有相匹配的描述结构,公开它们独一无二的属性。

渲染目标视图选项:我们看一下对于创建一个渲染目标视图的选项,如图描述结构必须被填充和传递创建方法,ID3D11Device::CreateRenderTargetView().

       如图所示,这个结构用几个普通变量,紧随一个独一无二的可能结构。当仍然提供独一无二的属性为每一个类型这允许不同的资源类型去使用相同的描述结构。当他读取时参数格式指定的资源数据结构将被计算。在一些情况下这允许资源格式在运行时被资源视图使用的格式所决定。这是有好处的对确定的程序,例如视频格式转换。这要求资源被以一种在结构中期望的兼容格式所创建。
        第二种变量,ViewDimension,指明了那种资源类型将被和资源视图绑定。变量的选项决定了那一个统一结构将被创建资源视图。这就是设备知道那个版本的结构去解释,这允许相同的创建函数和输入数据结构被使用为所有的类型,当仍然保持结构的最小化。尽管每一个资源类型使用不同的内存层和不同的选项,它为不同的资源结构分配不同的结构是有意义的。

深度模板视图选项:深度模板视图选项结构有一个类似渲染目标视图的描述结构。它的组成如下图所示:
如上图所示,深度模版视图选项也需要一个DXGI数据格式和一个指定的视图维。令人感兴趣的是不同的资源类型能被比渲染目标视图更小的一个深度模板资源视图使用。
       另一个需要注意的特性是这个结构增加了一个标志参数。如果资源的深度或模板部分将要被在资源视图管线中只读,这允许按位OR(|)组合指定。这允许多个深度模板资源视图同时绑定到测试内容的计算管线。

着色资源视图选项,它遵循如上的描述结构格式,然而注意三个新的资源类型,如下图所示。
如图新加的类型为TextureCube、TextureCubeArray和BufferEx,一个TextureCube允许一个Texture2D资源数组解释为一个立方体纹理,也允许HLSL程序使用特定函数采样纹理。这也适用于一个TextureCubeArray。BufferEx类型允许一个缓冲被解释为一个根缓冲,在着色程序内部这使HLSL程序自由地为结构解释。

无序接入视图选项,如以上一样:

无序接入资源视图为配置缓冲资源提供了几个新的选项。



0 0
原创粉丝点击