Share via


D3D12 코드 연습

이 섹션에서는 샘플 시나리오의 코드를 제공합니다. 다양한 연습을 통해 각 시나리오에 대한 기본 구성 요소 코드 반복을 피하기 위해 기본 샘플에 추가해야 하는 코딩을 자세히 설명합니다.

가장 기본적인 구성 요소는 기본 Direct3D 12 구성 요소 만들기 섹션을 참조하세요. 다음 연습에서는 고급 시나리오에 대해 설명합니다.

섹션 내용

항목 설명
D3D11on12를 사용한 D2D
D3D1211on12 샘플에서는 11 기반 디바이스와 12 기반 디바이스 간에 리소스를 공유하여 D3D12 콘텐츠를 통해 D2D 콘텐츠를 렌더링하는 방법을 보여 줍니다.
다중 엔진 다체(n-body) 중력 시뮬레이션
D3D12nBodyGravity 샘플은 컴퓨팅 작업을 비동기적으로 수행하는 방법을 보여 줍니다. 이 샘플은 각각 컴퓨팅 명령 큐를 포함하는 많은 스레드를 실행하고 다체(n-body) 중력 시뮬레이션을 수행하는 GPU에서 컴퓨팅 작업을 예약합니다. 각 스레드는 위치 및 속도 데이터로 가득 찬 두 개의 버퍼에서 작동합니다. 반복할 때마다 컴퓨팅 셰이더는 한 버퍼에서 현재 위치 및 속도 데이터를 읽고 다음 반복을 다른 버퍼에 기록합니다. 반복이 완료되면 컴퓨팅 셰이더가 위치/속도 데이터를 읽는 데 필요한 SRV인 버퍼와 각 버퍼에서 리소스 상태를 변경하여 위치/속도 업데이트를 쓰는 데 필요한 UAV인 버퍼를 교환합니다.
술어 쿼리
D3D12PredicationQueries 샘플은 DirectX 12 쿼리 힙 및 조건자를 사용한 폐색 컬링을 보여 줍니다. 연습에서는 조건자 쿼리를 처리하기 위해 HelloConstBuffer 샘플을 확장하는 데 필요한 추가 코드를 설명합니다.
HLSL 5.1을 사용한 동적 인덱싱
D3D12DynamicIndexing 샘플은 셰이더 모델 5.1에서 사용할 수 있는 새로운 HLSL 기능(특히 동적 인덱싱 및 바인딩되지 않은 배열)을 보여 줍니다. 동적으로 선택된 재질로 렌더링할 때마다 동일한 메시를 여러 번 렌더링합니다. 동적 인덱싱을 사용하면 이제 셰이더는 컴파일 타임에 인덱스 값을 알지 못해도 배열로 인덱싱할 수 있습니다. 바인딩되지 않은 배열과 함께 사용할 경우 셰이더 작성자 및 아트 파이프라인에 대해 다른 간섭 수준 및 유연성이 추가됩니다.
간접 그리기 및 GPU 선별(culling)
D3D12ExecuteIndirect 샘플은 간접 명령을 사용하여 콘텐츠를 그리는 방법을 보여 줍니다. 또한 이러한 명령을 실행하기 전에 컴퓨팅 셰이더의 GPU에서 조작하는 방법도 보여 줍니다.

Direct3D 12 프로그래밍 가이드

DirectX advanced learning video tutorials(DirectX 고급 학습 동영상 자습서)

D3D12 참조의 예제 코드

작업 샘플