如何:以编程方式初始化纹理

可以在创建对象期间初始化纹理,也可以在创建对象后以编程方式填充该对象。 本主题提供了几个示例,演示如何初始化使用不同类型的用法创建的纹理。 此示例假定你已了解如何 创建纹理

默认用法

最常见的使用类型是默认用法。 若要填充默认纹理 (使用 D3D11_USAGE_DEFAULT) 创建的纹理,可以:

动态使用情况

若要填充动态纹理 (使用 D3D11_USAGE_DYNAMIC) 创建的纹理:

  1. 调用 ID3D11DeviceContext::Map 时,通过传入D3D11_MAP_WRITE_DISCARD来获取指向纹理内存的指针。
  2. 将数据写入内存。
  3. 完成写入数据后,调用 ID3D11DeviceContext::Unmap

暂存使用情况

使用D3D11_USAGE_STAGING) 创建的过渡纹理 (填充过渡纹理:

  1. 调用 ID3D11DeviceContext::Map 时,通过传入 D3D11_MAP_WRITE 来获取指向纹理内存的指针。
  2. 将数据写入内存。
  3. 完成写入数据后,调用 ID3D11DeviceContext::Unmap

然后,过渡纹理可用作 ID3D11DeviceContext::CopyResourceID3D11DeviceContext::CopySubresourceRegion 的 源参数,以填充默认或动态资源。

如何使用 Direct3D 11

纹理