다음을 통해 공유


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);

D3D12 참조의 예제 코드를 참조하세요.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 d3d12.h
라이브러리 D3D12.lib
DLL D3D12.dll

추가 정보

ID3D12Device