Метод 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 . Пустой pResource используется для инициализации дескриптора NULL, который гарантирует поведение привязки null типа D3D11 (чтение 0s, операции записи удаляются), но для определения типа дескриптора необходимо иметь допустимый pDesc .
[in, optional] pDesc
Тип: const D3D12_SHADER_RESOURCE_VIEW_DESC*
Указатель на структуру D3D12_SHADER_RESOURCE_VIEW_DESC , описывающую представление шейдер-ресурс.
Значение null pDesc используется для инициализации дескриптора по умолчанию, если это возможно. Это поведение идентично поведению дескриптора NULL D3D11, где заполняются значения по умолчанию. Это поведение наследует формат и измерение ресурса (если не бестипные), а для буферов SRV нацелены на полный буфер и являются типизированными (не необработанными или структурированными), а для текстур srv — полная текстура, все mips и все срезы массива. Не все ресурсы поддерживают инициализацию дескриптора NULL.
[in] DestDescriptor
Тип: D3D12_CPU_DESCRIPTOR_HANDLE
Описывает дескриптор ЦП, представляющий представление ресурсов шейдера. Этот дескриптор можно создать в куче дескрипторов, видимых шейдером или невидимым шейдером.
Возвращаемое значение
None
Remarks
Обработка видеоформатов YUV 4:2:0
Приложение должно сопоставлять плоскость luma (Y) отдельно от плоскостей хрома (УФ). Разработчики делают это, дважды вызывая CreateShaderResourceView для одной и той же текстуры и передавая 1-канальный и 2-канальный форматы. Передача в 1-канальный формат, совместимый с плоскостью Y, сопоставляет только плоскость Y. Передача 2-канального формата, совместимого с УФ-плоскостями (вместе), сопоставляет только плоскости you и V как единое представление ресурсов.Форматы YUV 4:2:0 перечислены в DXGI_FORMAT.
Примеры
В примере 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 |
Header | d3d12.h |
Библиотека | D3D12.lib |
DLL | D3D12.dll |