ID3D12Device::CreateShaderResourceView 方法 (d3d12.h)
创建用于访问资源中的数据的着色器资源视图。
语法
void CreateShaderResourceView(
[in, optional] ID3D12Resource *pResource,
[in, optional] const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
[in] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor
);
参数
[in, optional] pResource
类型: ID3D12Resource*
指向表示着色器资源的 ID3D12Resource 对象的指针。
必须至少提供 一个 pResource 或 pDesc 。 null pResource 用于初始化 null 描述符,该描述符保证 (读取 0 (类似于 D3D11 的 null 绑定行为,写入) 被丢弃,但必须具有有效的 pDesc 才能确定描述符类型。
[in, optional] pDesc
类型: const D3D12_SHADER_RESOURCE_VIEW_DESC*
指向描述着色器资源视图 的D3D12_SHADER_RESOURCE_VIEW_DESC 结构的指针。
如果可能,使用 null pDesc 初始化默认描述符。 此行为与 D3D11 null 描述符行为相同,其中将填充默认值。 此行为继承资源格式和维度 ((如果不是无类型) ;对于缓冲区,SRV 以完整缓冲区为目标,类型化 (非原始或结构化) ,对于纹理 SRV,则以完整纹理、所有 mips 和所有数组切片为目标。 并非所有资源都支持 null 描述符初始化。
[in] DestDescriptor
类型: D3D12_CPU_DESCRIPTOR_HANDLE
描述表示着色器资源视图的 CPU 描述符句柄。 可以在着色器可见或不可着色器可见的描述符堆中创建此句柄。
返回值
无
备注
处理 YUV 4:2:0 视频格式
应用必须将亮度 (Y) 平面与色度 (UV) 平面分开映射。 开发人员为此,针对同一纹理调用 CreateShaderResourceView 两次,并采用 1 通道和 2 通道格式传递。 传入与 Y 平面兼容的 1 通道格式仅映射 Y 平面。 传入与 UV 平面兼容的 2 通道格式 (一起) 仅将 you 和 V 平面映射为单个资源视图。DXGI_FORMAT 中列出了 YUV 4:2:0 格式。
示例
D3D12nBodyGravity 示例使用 ID3D12Device::CreateShaderResourceView,如下所示:
根据一个说明描述并创建两个着色器资源视图。
D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc = {};
srvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
srvDesc.Format = DXGI_FORMAT_UNKNOWN;
srvDesc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
srvDesc.Buffer.FirstElement = 0;
srvDesc.Buffer.NumElements = ParticleCount;
srvDesc.Buffer.StructureByteStride = sizeof(Particle);
srvDesc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle0(m_srvUavHeap->GetCPUDescriptorHandleForHeapStart(), SrvParticlePosVelo0 + index, m_srvUavDescriptorSize);
CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle1(m_srvUavHeap->GetCPUDescriptorHandleForHeapStart(), SrvParticlePosVelo1 + index, m_srvUavDescriptorSize);
m_device->CreateShaderResourceView(m_particleBuffer0[index].Get(), &srvDesc, srvHandle0);
m_device->CreateShaderResourceView(m_particleBuffer1[index].Get(), &srvDesc, srvHandle1);
请参阅 D3D12 参考中的示例代码。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | d3d12.h |
Library | D3D12.lib |
DLL | D3D12.dll |