1

我正准备开始一个 C++ DirectX 10 应用程序,该应用程序将由多个“面板”组成,以显示不同类型的信息。我在一个 RenderTargetView 上尝试了多个视口,并取得了一些成功。但是,我找不到关于如何一次清除单个视口的明确答案。我的应用程序中的这些面板(视口)将在某些区域重叠,所以我希望能够从“下到上”绘制它们,同时清除每个视口,这样下面板的绘图就不会显示在更高的。在 DirectX 9 中,设备对象的 Clear() 方法似乎只清除当前设置的视口。DirectX 10 使用 ClearRenderTargetView(),它清除整个绘图区域,

DirectX 10 中有没有办法只清除绘图区域内的视口/矩形?有人推测,唯一的方法可能是在该空间中绘制一个四边形。似乎另一种可能性是为每个面板设置一个单独的 RenderTargetView,但我想避免这种情况,因为它需要其他冗余资源,例如单独的深度/模板缓冲区(除非这是我的误解)。

任何帮助将不胜感激!谢谢!

4

2 回答 2

1

我建议每个“视口”使用一个渲染目标,并使用四边形将它们合成在一起以获得最终视图。我知道没有办法在 DX 10 中清除。

此外,根据此处的文章,“可以将渲染目标视图数组传递到 ID3D10Device::OMSetRenderTargets,但是所有这些渲染目标视图都将对应于单个深度模板视图。”

希望这可以帮助。

于 2011-07-06T22:08:29.293 回答
0

您能否不只是创建一个着色器以及适当的混合状态设置和一个方形网格(或其他形状的网格)并使用它来清除您想要清除的区域?我没有尝试过,但我认为可以做到。

于 2012-03-20T09:53:20.937 回答