2012-07-06 54 views
0

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

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

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

回答

0

一般而言,这是一个很好的方法,但要小心提出目标转换成本。另外,如果每个场景在转换时都要进行动画制作,那么您需要将两个场景同时渲染到两个不同的渲染目标中,然后在屏幕上合成结果。

+0

你的第二句话是什么意思?如果我有两个可见的场景,那么之后他们都会被绘制到纹理和管理员的纹理上。 – Mars 2012-07-06 14:59:22

+0

是的,这就是我正在谈论的 - 虽然组成可以直接进入后台缓冲区,而不需要添加另一个屏幕大小的rendertarget。 – Ani 2012-07-06 15:13:09

+0

不幸的是,因为我想能够制作屏幕截图^^ – Mars 2012-07-06 15:21:49