D3D10_USAGE 枚举 (d3d10.h)

标识呈现期间的预期资源使用。 使用情况直接反映资源是否可以由 CPU 和/或 GPU 访问。

语法

typedef enum D3D10_USAGE {
  D3D10_USAGE_DEFAULT = 0,
  D3D10_USAGE_IMMUTABLE = 1,
  D3D10_USAGE_DYNAMIC = 2,
  D3D10_USAGE_STAGING = 3
} ;

常量

 
D3D10_USAGE_DEFAULT
值: 0
需要 GPU 读取和写入访问权限的资源。 这可能是最常见的用法选择。
D3D10_USAGE_IMMUTABLE
值:1
只能由 GPU 读取的资源。 它不能由 GPU 编写,并且完全不能由 CPU 访问。 此类资源必须在创建时进行初始化,因为创建后无法对其进行更改。
D3D10_USAGE_DYNAMIC
值: 2
GPU 和 CPU 都可访问的资源, (只写入) 。 对于每帧由 CPU 至少更新一次的资源,动态资源是不错的选择。 若要写入 CPU 上的动态资源,请使用 Map 方法。 可以使用 CopyResourceCopySubresourceRegion 写入 GPU 上的动态资源。
D3D10_USAGE_STAGING
值: 3
支持数据传输 (将) 从 GPU 复制到 CPU 的资源。

注解

应用程序标识资源的使用方式, (资源说明中的使用情况) 。 有几种用于创建资源的结构,包括: D3D10_TEXTURE1D_DESCD3D10_TEXTURE2D_DESCD3D10_TEXTURE3D_DESCD3D10_BUFFER_DESCD3DX10_IMAGE_LOAD_INFO

Direct3D 9 和 Direct3D 10 之间的差异:

在 Direct3D 9 中,使用 D3DPOOL) 指定在资源创建时应 (创建资源的内存类型。 应用程序的工作是决定哪个内存池将提供功能和性能的最佳组合。

在 Direct3D 10 中,应用程序不再指定池 () 创建资源的内存类型。 而是指定资源的预期使用情况,让运行时与驱动程序和内存管理器 () 选择可实现最佳性能的内存类型。

 

资源使用限制

每个用法都决定了功能和性能之间的权衡。 通常,资源访问是使用以下 API 完成的。 使用下表选择最能描述 CPU 和/或 GPU 需要如何访问资源的使用情况。 当然,会有性能权衡。
资源使用情况 Default 动态 不可变 过渡
GPU-Read yes¹ 1, 2
GPU-Write yes¹ 1, 2
CPU-Read 1, 2
CPU-Write 1, 2
 

资源绑定选项

为了最大限度地提高性能,并非所有资源使用选项都可以用作管道的输入或输出资源。 此表标识了这些限制。
资源可以绑定为 Default 动态 不可变 过渡
对阶段的输入 是的 yes⁴
阶段的输出 是的
 
  • 3 - 如果使用不同视图绑定为输入和输出,则每个视图都必须使用不同的 子资源
  • 4 - 只能使用单个 子资源创建资源。 资源不能是纹理数组。 资源不能是 mipmap 链。

要求

要求
Header d3d10.h

另请参阅

资源枚举