在 Direct3D 9) (溶解、淡出和轻扫
应用程序越来越多地使用电影和视频中常用的特殊效果,例如溶解、滑动和淡化。
在溶解效果中,一个图像经过平滑流畅的帧序列逐渐替换成另一个图像。 尽管 Direct3D 提供的多纹理混合方法可实现同样的效果,但使用模板缓冲区生成溶解效果的应用程序可以在溶解过程中将纹理混合功能用于其他效果。
当应用程序执行溶解效果时,它必须渲染两个不同的图像。 它使用模板缓冲区来控制将各图像中的哪些像素绘制到渲染目标图面。 你可以定义一系列模具掩码,并将它们复制到连续帧上的模板缓冲区中。 或者,你也可以为第一个帧定义一个基本模具掩码,然后递增更改。
溶解开始时,你的应用程序将设置模具函数和模具掩码,以使起始图像中的大部分像素通过模具测试。 结束图像中的大部分像素应在模具测试中失败。 在连续的帧上,模具掩码将会更新,因此起始图像中通过测试的像素将越来越少。 随着帧不断跳转,结束图像中未能通过测试的像素将越来越少。 通过这种方式,你的应用程序可使用任意溶解模式执行溶解。
淡入或淡出是一种特殊的溶解形式。 淡入时,模板缓冲区用于将黑色或白色图像溶解至渲染的 3D 场景。 淡出与之相反,应用程序将从渲染的 3D 场景开始,溶解至黑色或白色。 你可以采用任意模式来完成淡化。
Direct3D 应用程序使用类似的技术实现滑动效果。 例如,当应用程序执行从左到右滑动时,结束图像从左至右逐渐覆盖起始图像,显示于幻灯片上。 与溶解相同,你必须定义一系列模具掩码并将它们加载到连续帧上的模板缓冲区中,或逐帧修改起始模具掩码。 模具掩码用于禁用从起始图像写入像素以及启用从结束图像写入像素。
某种程度上,滑动比溶解更复杂,因为应用程序必须按照与滑动相反的方向从结束图像中读取像素。 也就是说,如果滑动是从左到右的,应用程序必须从右到左从结束图像中读取像素。
相关主题