Vulkan的LoadOp和StoreOp相当于DirectX 12?

时间:2019-11-06 22:29:36

标签: directx directx-12

在许多D3D 12教程和书籍中,清除渲染目标视图时只需清除深度模板缓冲区。这是大多数情况,但是我遇到了特殊情况,我想知道即使清除了另一个缓冲区也是否保留了缓冲区数据中的数据。例如,清除渲染目标后是否保留深度模板缓冲区的数据。

在Vulkan中,甚至Metal都提供LoadOp和StoreOp来保证命令队列开始或完成执行时的缓冲区数据。但是,我在D3D 12中找不到类似的选项。

正如我所知,从历史上看,D3D不能保证清除后的缓冲区数据。是吗?

否则,是否始终保证保留?如果有任何有关此的Microsoft文章,请告诉我。

1 个答案:

答案 0 :(得分:0)

您可以使用“ ID3D12GraphicsCommandList :: ClearRenderTargetView”清除单个渲染目标。所有其他缓冲区保持不变。 'ID3D12GraphicsCommandList :: ClearDepthStencilView'可用于清除深度和/或模具。如果您不希望将它们清除,则可以将nullptr传递到深度或模具。 对于非渲染目标也有一个'ClearUnorderedAccessViewFloat / Int'