> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CreateShaderResourceView

> 리소스의 데이터에 액세스하기 위한 셰이더 리소스 뷰를 만듭니다. (ID3D12Device.CreateShaderResourceView)

리소스의 데이터에 액세스하기 위한 셰이더 리소스 뷰를 만듭니다.

## 구문

```cpp theme={null}
void CreateShaderResourceView(
    ID3D12Resource  pResource,
    const D3D12_SHADER_RESOURCE_VIEW_DESC  pDesc,
    D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor
)
```

### 매개 변수

*pResource \[in, optional]*<br />형식: ID3D12Resource \*

셰이더 리소스를 나타내는 [ID3D12Resource](/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs) 객체에 대한 포인터입니다.

<i>pResource</i> 또는 <i>pDesc</i> 중 하나 이상을 제공해야 합니다. null <i>pResource</i>는 null 디스크립터를 초기화하는 데 사용되며, 이는 D3D11과 유사한 null 바인딩 동작(0 읽기, 쓰기는 무시됨)을 보장하지만, 디스크립터 형식을 결정하려면 유효한 <i>pDesc</i>가 있어야 합니다.

*pDesc \[in, optional]*<br />형식: const D3D12\_SHADER\_RESOURCE\_VIEW\_DESC \*

셰이더 리소스 뷰를 설명하는 [D3D12\_SHADER\_RESOURCE\_VIEW\_DESC](/reference/graphics/d3d12/structs/d3d12_shader_resource_view_desc_public) 구조체에 대한 포인터입니다.

null <i>pDesc</i>는 가능한 경우 기본 디스크립터를 초기화하는 데 사용됩니다. 이 동작은 기본값이 채워지는 D3D11 null 디스크립터 동작과 동일합니다. 이 동작은 리소스 형식과 차원(typeless가 아닌 경우)을 상속하며, 버퍼의 경우 SRV는 전체 버퍼를 대상으로 하고 typed(raw나 structured가 아님)이며, 텍스처의 경우 SRV는 전체 텍스처, 모든 밉, 모든 배열 슬라이스를 대상으로 합니다. 모든 리소스가 null 디스크립터 초기화를 지원하지는 않습니다.

*DestDescriptor \[in]*<br />형식: D3D12\_CPU\_DESCRIPTOR\_HANDLE

셰이더 리소스 뷰를 나타내는 CPU 디스크립터 핸들을 설명합니다. 이 핸들은 셰이더에서 볼 수 있는 디스크립터 힙 또는 셰이더에서 볼 수 없는 디스크립터 힙에서 만들 수 있습니다.

### 반환 값

형식: void

없음.

## 설명

<h3><a id="Processing_YUV_4_2_0_video_formats" /><a id="processing_yuv_4_2_0_video_formats" /><a id="PROCESSING_YUV_4_2_0_VIDEO_FORMATS" />YUV 4:2:0 비디오 형식 처리</h3> 앱은 루마(Y) 평면을 크로마(UV) 평면과 별도로 매핑해야 합니다. 개발자는 동일한 텍스처에 대해 **CreateShaderResourceView**를 두 번 호출하고 1채널 및 2채널 형식을 전달하여 이를 수행합니다. Y 평면과 호환되는 1채널 형식을 전달하면 Y 평면만 매핑됩니다. UV 평면과 함께 호환되는 2채널 형식을 전달하면 U와 V 평면만 단일 리소스 뷰로 매핑됩니다.

YUV 4:2:0 형식은 [DXGI\_FORMAT](https://learn.microsoft.com/en-us/windows/desktop/api/dxgiformat/ne-dxgiformat-dxgi_format)에 나열되어 있습니다.

#### 예제

[D3D12nBodyGravity](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/working-samples) 샘플은 다음과 같이 **ID3D12Device::CreateShaderResourceView**를 사용합니다:

하나의 설명을 기반으로 두 개의 셰이더 리소스 뷰를 설명하고 만듭니다.

```cpp theme={null}
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 참조의 예제 코드](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/notes-on-example-code)를 참조하세요.

<div class="code" />

## 요구 사항

**헤더:** d3d12\_xs.h 또는 d3d12\_x.h<br />**라이브러리:** d3d12\_xs.lib 또는 d3d12\_x.lib<br />**지원 플랫폼**: XBOX Series 콘솔 및 XBOX One 제품군

## 함께 보기

[ID3D12Device](/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [D3D12_SHADER_RESOURCE_VIEW_DESC](/ko/reference/graphics/d3d12/structs/d3d12_shader_resource_view_desc_public.md)
- [D3D12_TEX1D_SRV](/ko/reference/graphics/d3d12/structs/d3d12_tex1d_srv_public.md)
- [D3D12_CPU_DESCRIPTOR_HANDLE](/ko/reference/graphics/d3d12/structs/d3d12_cpu_descriptor_handle_public.md)
- [D3D12_TEX3D_SRV](/ko/reference/graphics/d3d12/structs/d3d12_tex3d_srv_public.md)
- [D3D12_TEXCUBE_SRV](/ko/reference/graphics/d3d12/structs/d3d12_texcube_srv_public.md)
