在DirectX 10中清除单个视口

时间:2011-07-06 21:31:00

标签: directx clear viewport directx-10

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

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

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

2 个答案:

答案 0 :(得分:1)

我建议每个“viewport”使用一个渲染目标,并使用四边形将它们合成为最终视图。我知道没有办法在DX 10中剪掉一个清晰的东西。

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

希望这有帮助。

答案 1 :(得分:0)

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