Метод 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

См. также раздел

ID3D12Device