湍流效果

使用湍流效果生成基于 Perlin 噪声函数的位图。

湍流效果没有输入图像。

此效果的 CLSID 是CLSID_D2D1Turbulence。

示例图

效果示例屏幕截图,显示湍流效果的输出。

“湍流”效果计算 Perlin 噪声函数的一个或多个八度数之和。 Perlin 噪声是一个伪随机函数,其值取决于频率、位置和种子值。 该效果使用以下公式之一生成 RGBA 值。

如果选择D2D1_TURBULENCE_NOISE_FRACTAL_SUM噪音模式,则效果将使用此公式。

显示用于生成位图的湍流函数的屏幕截图。

如果选择D2D1_TURBULENCE_NOISE_TURBULENCE噪音模式,则效果将使用此公式。

用于生成位图的湍流函数。

备注

函数 PerlinNoise 的范围为 [-1, 1]。

此效果以预乘 alpha 输出像素值。

效果属性

显示名称和索引枚举 描述
Offset
D2D1_TURBULENCE_PROP_OFFSET
生成湍流输出的坐标。
用于生成 Perlin 噪声的算法依赖于位置,因此不同的偏移量会导致不同的输出。 此属性不受限制,单位在 DIP 中指定
注意: 偏移量与转换的效果不同,因为噪声函数输出是无限的,并且函数将环绕磁贴。
类型为D2D1_VECTOR_2F。
默认值为 {0.0f, 0.0f}。
大小
D2D1_TURBULENCE_PROP_SIZE
湍流输出的大小。
此属性不受限制,单位在 DIP 中指定

类型为D2D1_VECTOR_2F。
默认值为 {0.0f, 0.0f}。
BaseFrequency
D2D1_TURBULENCE_PROP_BASE_FREQUENCY
X 和 Y 方向的基频率。 此属性是浮点数,必须大于 0。 单位以 1/DIP 为单位指定。
如果值为 1 (1/DIP,则基频) 会导致 Perlin 噪声完成两个像素之间的整个周期。 这些像素的轻松内插会导致完全随机的像素,因为像素之间没有相关性。
Perlin 噪声函数为 0.1 (1/DRP) 基频,每隔 10 个 DIP 重复一次。 这会导致像素与典型湍流效应之间的关联是可见的。
类型为D2D1_VECTOR_2F。
默认值为 {0.01f, 0.01f}。
NumOctaves
D2D1_TURBULENCE_PROP_NUM_OCTAVES
噪声函数的八度数。 此属性是 UINT32,必须大于 0。
类型为 UINT32。
默认值为 1。
Seed
D2D1_TURBULENCE_PROP_SEED
伪随机生成器的种子。 此属性是无限制的。
类型为 UINT32。
默认值为 0。
噪音
D2D1_TURBULENCE_PROP_NOISE
湍流噪声模式。 此属性可以是 分形求和扰流。 指示是生成基于分形噪声的位图还是基于扰流函数的位图。 有关详细信息 ,请参阅噪音模式
类型为D2D1_TURBULENCE_NOISE。
默认值为 D2D1_TURBULENCE_NOISE_FRACTAL_SUM。
可拼合
D2D1_TURBULENCE_PROP_STITCHABLE
打开或关闭缝合。 调整基本频率,以便可以拼合输出位图。 如果要平铺扰流效果输出的多个副本,这非常有用。
  • True 可以使用平铺效果) (平铺输出位图,而不会出现接缝。 调整基本频率,以便可以拼合输出位图。
  • False 基本频率未调整,因此,如果位图平铺,则磁贴之间可能会出现接缝。

类型为 BOOL。
默认值是 FALSE。

噪音模式

枚举 描述
D2D1_TURBULENCE_NOISE_FRACTAL_SUM 计算八度数的总和,将输出范围从 [-1, 1] 移动到 [0, 1]。
D2D1_TURBULENCE_NOISE_TURBULENCE 计算每个 octave 的绝对值之和。

备注

两种模式均不包含输出值的显式固定。

输出位图

此效果生成逻辑上无限大小的位图。

要求

要求
最低受支持的客户端 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用]
最低受支持的服务器 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用]
标头 d2d1effects.h
d2d1.lib、dxguid.lib

ID2D1Effect