ID3D11Device::CreateTexture2D 方法 (d3d11.h)

创建 2D 纹理数组

语法

HRESULT CreateTexture2D(
  [in]            const D3D11_TEXTURE2D_DESC   *pDesc,
  [in, optional]  const D3D11_SUBRESOURCE_DATA *pInitialData,
  [out, optional] ID3D11Texture2D              **ppTexture2D
);

参数

[in] pDesc

类型: const D3D11_TEXTURE2D_DESC*

指向描述 2D 纹理资源的 D3D11_TEXTURE2D_DESC 结构的指针。 若要创建可在运行时解释为不同兼容格式的无类型资源,请在纹理说明中指定无类型格式。 若要自动生成 mipmap 级别,请将 mipmap 级别数设置为 0。

[in, optional] pInitialData

类型: const D3D11_SUBRESOURCE_DATA*

指向描述 2D 纹理资源的子资源的 D3D11_SUBRESOURCE_DATA 结构的数组的指针。 创建 IMMUTABLE 资源时,应用程序无法为 pInitialData 指定 NULL, (查看D3D11_USAGE) 。 如果资源是多重采样的, 则 pInitialData 必须为 NULL ,因为多重采样资源在创建时无法使用数据进行初始化。

如果未将任何内容传递给 pInitialData,则资源内存的初始内容未定义。 在这种情况下,需要在读取资源之前以其他方式写入资源内容。

可以使用以下计算,根据 pDesc 指向的 D3D11_TEXTURE2D_DESC 结构的 MipLevelsArraySize 成员中的值来确定此数组的大小:

MipLevels * ArraySize

有关此数组大小的详细信息,请参阅备注。

[out, optional] ppTexture2D

类型: ID3D11Texture2D**

指向缓冲区的指针,该缓冲区接收指向所创建纹理的 ID3D11Texture2D 接口的指针。 将此参数设置为 NULL 可验证其他输入参数, (如果其他输入参数通过验证) ,该方法将返回S_FALSE。

返回值

类型: HRESULT

如果该方法成功,则返回代码S_OK。 有关失败的错误代码,请参阅 Direct3D 11 返回代码

注解

CreateTexture2D 创建一个 2D 纹理资源,该资源可以包含多个 2D 子资源。 纹理说明中指定纹理的数量。 资源中的所有纹理必须具有相同的格式、大小和 mipmap 级别数。

所有资源都由一个或多个子资源组成。 若要将数据加载到纹理中,应用程序最初可以将数据作为 pInitialData 指向的D3D11_SUBRESOURCE_DATA结构数组提供,也可以使用 D3DX 纹理函数之一,例如 D3DX11CreateTextureFromFile

对于具有完整 mipmap 链的 32 x 32 纹理, pInitialData 数组具有以下 6 个元素:

  • pInitialData[0] = 32x32
  • pInitialData[1] = 16x16
  • pInitialData[2] = 8x8
  • pInitialData[3] = 4x4
  • pInitialData[4] = 2x2
  • pInitialData[5] = 1x1

要求

要求
目标平台 Windows
标头 d3d11.h
Library D3D11.lib

另请参阅

ID3D11Device