ID3D11Device::CreateShaderResourceView 方法 (d3d11.h)

创建用于访问资源中的数据的着色器资源视图。

语法

HRESULT CreateShaderResourceView(
  [in]            ID3D11Resource                        *pResource,
  [in, optional]  const D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc,
  [out, optional] ID3D11ShaderResourceView              **ppSRView
);

参数

[in] pResource

类型: ID3D11Resource*

指向将用作着色器的输入的资源的指针。 此资源必须已使用 D3D11_BIND_SHADER_RESOURCE 标志创建。

[in, optional] pDesc

类型: const D3D11_SHADER_RESOURCE_VIEW_DESC*

指向着色器资源视图说明的指针, (查看 D3D11_SHADER_RESOURCE_VIEW_DESC) 。 将此参数设置为 NULL 可创建一个视图,该视图使用) 创建资源的格式访问整个资源 (。

[out, optional] ppSRView

类型: ID3D11ShaderResourceView**

指向 ID3D11ShaderResourceView 的指针的地址。 将此参数设置为 NULL 可验证其他输入参数, (如果其他输入参数通过 验证) ,该方法将返回S_FALSE。

返回值

类型: HRESULT

此方法返回以下 Direct3D 11 返回代码之一

注解

资源由一个或多个子资源组成;视图标识允许管道访问的子资源。 此外,每个资源都使用视图绑定到管道。 着色器资源视图旨在使用以下 API 方法将任何缓冲区或纹理资源绑定到着色器阶段: ID3D11DeviceContext::VSSetShaderResourcesID3D11DeviceContext::GSSetShaderResourcesID3D11DeviceContext::P SSetShaderResources

由于视图已完全类型化,这意味着无类型资源在绑定到管道时变为完全类型化。

注意 若要从无类型缓冲区 ((例如 ,DXGI_FORMAT_R32G32B32A32_TYPELESS) )成功创建着色器资源视图,必须在创建缓冲区时设置 D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS 标志。
 
Direct3D 11.1 运行时(从 Windows 8 开始提供)允许将 CreateShaderResourceView 用于以下新用途。

可以创建视频资源的着色器资源视图,以便 Direct3D 着色器可以处理这些着色器资源视图。 这些视频资源是 Texture2DTexture2DArray。 创建的着色器资源视图的 D3D11_SHADER_RESOURCE_VIEW_DESC 结构的 ViewDimension 成员中的值必须与视频资源的类型匹配,D3D11_SRV_DIMENSION_TEXTURE2D适用于 Texture2D,对于 Texture2DArray 为 D3D11_SRV_DIMENSION_TEXTURE2DARRAY。 此外,基础视频资源的格式会限制视图可以使用的格式。 DXGI_FORMAT引用页上的视频资源格式值指定视图限制的格式值。

运行时读写冲突防护逻辑 (它阻止资源同时绑定为 SRV 和 RTV 或 UAV,) 为简单起见,将同一视频图面不同部分的视图视为冲突。 因此,即使硬件可能允许这些同时操作,运行时也不允许应用程序从 luma 读取数据,而应用程序同时呈现为同一图面中的色度。

Windows Phone 8:支持此 API。

要求

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

另请参阅

ID3D11Device