Подраспределение в буферах

Буферы имеют все функции, необходимые в D3D12 для передачи приложений большого диапазона временных данных из ЦП в GPU. В этом разделе рассматриваются четыре распространенных сценария использования ресурсов и буферов и управления ими.

Как и D3D11, приложения в D3D12 по-прежнему должны объявлять использование памяти при выделении буферов в D3D12 по сравнению с динамическими и промежуточными ресурсами в D3D11, но в D3D12 разработчики имеют большую гибкость и более жесткий контроль над использованием памяти. Буферы с помощью подлокации имеют все функции, необходимые для управления низкоуровневой памятью.

В этом разделе

Раздел Описание
Отправка различных типов ресурсов
Показывает, как использовать один буфер для передачи данных буфера констант и данных буфера вершин в GPU, а также как правильно выделить и поместить данные в буферы. Использование одного буфера повышает гибкость использования памяти и обеспечивает приложениям более жесткий контроль использования памяти. Также показаны различия между моделями D3D11 и D3D12 для отправки различных типов ресурсов.
Отправка данных текстуры через буферы
Отправка 2D-или трехмерных текстурных данных аналогична отправке 1D-данных, за исключением того, что приложениям необходимо уделять больше внимания выравниванию данных, связанным с шагом строки. Буферы можно использовать ортогонически и одновременно из нескольких частей графического конвейера и очень гибки.
Считывание данных обратно через буфер
Чтение данных обратно с GPU, таких как запись снимка экрана, включает использование кучи обратного чтения.
Управление ресурсами на основе границ
Показывает, как управлять жизненным циклом данных ресурсов путем отслеживания хода выполнения GPU с помощью ограждений. Память можно эффективно повторно использовать с ограждениями, тщательно управляя доступностью свободного пространства в памяти, например в реализации кольцевого буфера для кучи отправки.

Управление памятью