解散、淡化和轻扫 (Direct3D 9)

越来越多的应用程序采用电影和视频中常用的特殊效果,例如解散、轻扫和淡化。

在解体中,一个图像逐渐被另一个图像在平滑的帧序列中替换。 尽管 Direct3D 提供了使用多个纹理混合来实现相同效果的方法,但使用模具缓冲区进行溶解的应用程序可以使用纹理混合功能来实现其他效果,同时它们会解析。

当应用程序执行解体时,它必须呈现两个不同的图像。 它使用模具缓冲区来控制将每个图像中的像素绘制到呈现目标图面。 可以定义一系列模具掩码,并将其复制到连续帧的模具缓冲区中。 或者,可以定义第一帧的基本模具掩码,并增量更改它。

在解体开始时,应用程序设置模具函数和模具掩码,以便起始图像中的大多数像素通过模具测试。 结束图像中的大多数像素应未能通过模具测试。 在连续的帧上,模具掩码会更新,以便起始图像中的像素数越来越少通过测试。 随着帧的进度,结束图像中的像素数越来越少,测试失败。 通过这种方式,应用程序可以使用任意解散模式执行解体。

淡入或淡出是一种特殊情况下的解散。 淡入时,模具缓冲区用于从黑白图像分解到 3D 场景的呈现。 淡出是相反的,应用程序从 3D 场景的呈现开始,并解析为黑色或白色。 可以使用想要使用的任何任意模式来完成淡化。

Direct3D 应用程序使用类似的轻扫技术。 例如,当应用程序执行从左向右轻扫时,结束图像将逐渐从左向右滑动。 与解体一样,必须定义一系列模具掩码,这些掩码加载到连续帧上的模具缓冲区中,或连续修改起始模具掩码。 模具掩码用于禁用从起始图像中写入像素,并启用从结束图像中写入像素。

轻扫比消散更复杂,因为应用程序必须按照轻扫的相反顺序从结束图像中读取像素。 也就是说,如果轻扫从左向右移动,应用程序必须从右到左读取结束图像中的像素。

模具缓冲区技术