纹理视图 (Direct3D 10)

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

视图支持无类型资源的概念。 无类型资源是使用特定大小而不是特定数据类型创建的资源。 将数据绑定到管道时动态解释。

下图显示了通过为其创建着色器资源视图,将包含 6 个纹理的 2D 纹理数组绑定为着色器资源的示例。 然后将资源作为纹理数组进行寻址。 (注意:子资源不能同时作为输入和输出绑定到管道。

具有六个纹理的纹理数组的 插图

将 2D 纹理数组用作呈现目标时,可以将资源视为具有 mipmap 级别的 2D 纹理(在本示例中为 6)的数组(在此示例中为 3)。

通过调用 CreateRenderTargetView 为呈现目标创建视图对象。 然后调用 OMSetRenderTargets,将呈现目标视图设置为管道。 通过调用 Draw 并使用 RenderTargetArrayIndex 为数组中的适当纹理编制索引,呈现到呈现目标中。 可以使用子资源(mipmap 级别、数组索引组合)绑定到任何子资源数组。 因此,可以绑定到第二个 mipmap 级别,并且仅根据需要更新此特定 mipmap 级别,如下图所示。

仅绑定到纹理数组的第二个 mipmap 级别的插图

Direct3D 9 和 Direct3D 10 之间的差异:

  • 在 Direct3D 10 中,不再将资源直接绑定到管道,创建资源的视图,然后将该视图设置为管道。 这允许在创建视图时在运行时和驱动程序中进行验证和映射,从而最大程度地减少绑定时的类型检查。

 

资源(Direct3D 10)