Что такое DirectX 12 эквивалентно Vulkan LoadOp и StoreOp? - PullRequest
0 голосов
/ 07 ноября 2019

Во многих учебниках и книгах по D3D 12 просто очищайте буфер глубины трафарета, когда очищаете представление цели рендеринга. Это большая ситуация, но я столкнулся с особым случаем, мне интересно, были ли данные буфера сохранены, даже если был очищен другой буфер. Например, были ли сохранены данные буфера трафарета глубины, когда цель рендеринга была очищена.

В Vulkan, даже Metal, предоставляет LoadOp и StoreOp, чтобы гарантировать данные буфера, когда очередь команд запущена или завершено выполнение. Однако я не могу найти такие опции в D3D 12.

Поскольку я знаю, что исторически D3D не гарантирует данные буфера при очистке. Правильно ли это?

В противном случае, всегда ли гарантировано сохранение? Если есть какая-либо статья Microsoft по этому поводу, пожалуйста, сообщите мне.

1 Ответ

0 голосов
/ 08 ноября 2019

Вы можете использовать 'ID3D12GraphicsCommandList :: ClearRenderTargetView', чтобы очистить одну цель рендеринга. Все остальные буферы остаются без изменений. 'ID3D12GraphicsCommandList :: ClearDepthStencilView' может использоваться для очистки глубины и / или трафарета. Вы передаете nullptr либо в глубину, либо в трафарет, если не хотите, чтобы они были очищены. Существует также ClearUnorderedAccessViewFloat / Int для целей, не связанных с визуализацией

...