纹理视图

在 Direct3D 中,使用视图访问纹理资源,这是适用于内存中资源的硬件解释的机制。 视图允许特定管道阶段仅访问所需的子资源(采用应用程序所需的表示形式)。

视图支持无类型资源的概念。 无类型资源是所创建的具有特定大小,但无特定数据类型的资源。 数据在绑定到管道时动态解译。

下图例举了通过创建相应的着色器资源视图,将含 6 个纹理的 2D 纹理数组绑定作为着色器资源。 然后,以纹理数组的形式实行资源寻址。 (请注意:子资源不能同时绑定为管道的输入和输出。)

图示为含 6 个纹理的纹理数组

将 2D 纹理数组作为呈现对象时,资源可以被视为带 mipmap 层级(本例中为三个层级)的 2D 纹理(本例中,含 6 个纹理)数组。

针对呈现对象创建视图对象,并命名为“CreateRenderTargetView”。 然后,调用 OMSetRenderTargets 以设置针对管道的呈现目标视图。 通过调用绘制并使用 RenderTargetArrayIndex 对数组中的相应纹理编索引的方式呈现目标。 你可以使用子资源(mipmap 层级,数组下标组合)绑定到任何子资源组。 你可以绑定到第二 mipmap 层级并且只更新所需的特定 mipmap 层级,如下图所示。

图示为仅绑定到纹理数组的第二 mipmap 层级

资源