버퍼 내 하위 할당

버퍼에는 애플리케이션이 CPU에서 GPU로 많은 임시 데이터를 전송하기 위해 D3D12에 필요한 모든 기능이 있습니다. 이 섹션에서는 리소스 및 버퍼의 사용 및 관리에 대한 네 가지 일반적인 시나리오를 다룹니다.

D3D11과 마찬가지로 D3D12의 애플리케이션은 D3D11의 동적/스테이징 리소스에 비교하여 D3D12에서 버퍼를 할당할 때 메모리 사용을 선언해야 하지만, D3D12에서 개발자는 메모리 사용을 더 유연하고 엄격하게 제어할 수 있습니다. 하위 할당을 통한 버퍼에는 하위 수준 메모리 관리에 필요한 모든 기능이 있습니다.

섹션 내용

항목 설명
다양한 종류의 리소스 업로드
하나의 버퍼를 사용하여 상수 버퍼 데이터와 꼭짓점 버퍼 데이터를 둘 다 GPU에 업로드하는 방법과 버퍼 내에서 데이터를 적절하게 하위 할당 및 배치하는 방법을 보여 줍니다. 단일 버퍼를 사용하면 메모리 사용 유연성이 증가하고 애플리케이션이 메모리 사용을 더 엄격하게 제어할 수 있습니다. 또한 다른 종류의 리소스를 업로드하기 위한 D3D11 및 D3D12 모델 간의 차이점을 보여 줍니다.
버퍼를 통해 텍스처 데이터 업로드
2D 또는 3D 질감 데이터를 업로드하는 것은 애플리케이션이 행 피치에 관련된 데이터 정렬에 더 주의해야 한다는 점을 제외하고 1D 데이터를 업로드하는 것과 비슷합니다. 버퍼는 그래픽 파이프라인의 여러 부분에서 직각으로 동시에 사용할 수 있으며 매우 유연합니다.
버퍼를 통해 데이터 다시 읽기
스크린샷 캡처와 같이 GPU에서 데이터를 다시 읽으려면 다시 읽기 힙을 사용합니다.
펜스 기반 리소스 관리
펜스를 통해 GPU 진행 상황을 추적하여 리소스 데이터 수명을 관리하는 방법을 보여 줍니다. 업로드 힙을 위한 링 버퍼 구현과 같이 메모리에서 사용 가능한 공간의 가용성을 신중하게 관리하는 펜스를 통해 메모리를 효과적으로 다시 사용할 수 있습니다.

메모리 관리