渲染每个场景的目标,用于过渡

时间:2012-07-06 13:27:55

标签: c# xna transition scene

我正在尝试为转换提出一般概念,而不必在实际场景中包含任何特定代码。在我到目前为止看到的所有样本中,场景自己处理这些东西。像淡入/淡出一样,场景必须调整其绘制方法,以获得正确的透明度。但是,不仅在每个场景中都会感到烦恼,而且有多种转换,你会很快地混乱代码。

所以我一直在想。我可以想出支持这个的唯一方法,以及更复杂的过渡,而不是在场景中处理它,是每个场景的渲染目标。在调用draw方法之前,将从场景管理器设置渲染目标。绘制后,渲染目标将重置为管理器的渲染目标,并且将使用有关当前过渡的信息绘制场景的纹理。如果不需要绘制更多场景,则不清除管理器纹理会跟随更多场景。这样你几乎可以做任何事情(转换明智),场景将完全相互独立,你不需要在实际场景中使用一行转换代码。 (作为参考,我希望能够做各种过渡类型。不仅淡化,还有着色器效果,移动一个场景而当前场景被“推开”等等,涉及一个或多个场景。)

嗯,这是我的理论。我的问题出现了:这听起来像一个可行的计划吗?这是要走的路吗?我已经阅读了过于频繁地切换渲染目标时的性能问题,以及其他问题,这是我不愿意实现这一点的主要原因。但到目前为止,我无法想到或找到更好的方法。虽然我认为它不应该有所作为,但目前我只关心2D(仅在案例中提到)。

1 个答案:

答案 0 :(得分:0)

这通常是一种合理的方法,但要注意渲染目标转换成本。此外,如果要在转换时为每个场景设置动画,您将同时将两个场景渲染为两个不同的渲染对象,然后在屏幕上合成结果。