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