DirectX 12与Vulkan';什么是LoadOp和StoreOp?

DirectX 12与Vulkan';什么是LoadOp和StoreOp?,directx,directx-12,Directx,Directx 12,在许多D3D12教程和书籍中,当清除渲染目标视图时,只需清除深度模具缓冲区。这是大多数情况,但我遇到了特殊情况,我想知道,即使另一个缓冲区已被清除,缓冲区数据的数据是否已被保留。例如,清除渲染目标时是否保留深度模具缓冲区的数据 在Vulkan中,甚至Metal都提供了LoadOp和StoreOp,以保证在命令队列开始或完成执行时缓冲区数据。但是,我在D3D12中找不到类似的选项 正如我所知,在历史上,D3D不保证缓冲区数据被清除。是这样吗 否则,它是否总是保证保存?如果Microsoft有任何关

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

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

正如我所知,在历史上,D3D不保证缓冲区数据被清除。是这样吗


否则,它是否总是保证保存?如果Microsoft有任何关于此的文章,请告诉我。

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

我已经知道了。但在某些驱动程序中,即使未绑定,在清除渲染目标时也不会保留深度模具缓冲区。这意味着Direct3D没有向VGA供应商指定关于它的标准。因此,我想知道它在D3D12中受到了限制。不管怎样,我搬到了Vulkan。谢谢