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 는 D3D11과 유사한 null 바인딩 동작을 보장하는 null 설명자를 초기화하는 데 사용되지만 설명자 형식을 확인하려면 유효한 pDesc 가 있어야 합니다.
[in, optional] pDesc
형식: const D3D12_SHADER_RESOURCE_VIEW_DESC*
셰이더 리소스 뷰를 설명하는 D3D12_SHADER_RESOURCE_VIEW_DESC 구조체에 대한 포인터입니다.
가능한 경우 null pDesc 를 사용하여 기본 설명자를 초기화합니다. 이 동작은 기본값이 채워지는 D3D11 null 설명자 동작과 동일합니다. 이 동작은 리소스 형식 및 차원(무형식이 아닌 경우)을 상속하고 버퍼의 경우 SRV는 전체 버퍼를 대상으로 하고 형식화되고(원시 또는 구조화되지 않음) 텍스처의 경우 전체 텍스처, 모든 밉 및 모든 배열 조각을 대상으로 합니다. 모든 리소스가 null 설명자 초기화를 지원하는 것은 아닙니다.
[in] DestDescriptor
형식: D3D12_CPU_DESCRIPTOR_HANDLE
셰이더 리소스 뷰를 나타내는 CPU 설명자 핸들에 대해 설명합니다. 이 핸들은 셰이더 표시 또는 비 셰이더 표시 설명자 힙에서 만들 수 있습니다.
반환 값
없음
설명
YUV 4:2:0 비디오 형식 처리
앱은 UV(크로마) 평면과 별도로 루마(Y) 평면을 매핑해야 합니다. 개발자는 동일한 텍스처에 대해 CreateShaderResourceView 를 두 번 호출하고 1 채널 및 2 채널 형식을 전달하여 이 작업을 수행합니다. Y 평면과 호환되는 1 채널 형식을 전달하면 Y 평면만 매핑됩니다. UV 평면과 호환되는 2채널 형식을 전달하면 사용자 및 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);
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | d3d12.h |
라이브러리 | D3D12.lib |
DLL | D3D12.dll |