具有动画湍流偏移的 Direct2D1 波形

问题描述 投票:0回答:0

我正在尝试使用 Direct2D1 重现以下效果:

我认为这将是一个“简单”使用内置湍流效果并调整偏移属性的案例,如文档所述:

偏移量

D2D1_TURBULENCE_PROP_OFFSET

产生湍流输出的坐标。用于生成 Perlin 噪声的算法与位置相关,因此不同的偏移量会导致不同的输出。此属性不受限制,单位在 DIP 中指定。

注意:偏移与平移没有相同的效果,因为噪声函数输出是无限的,函数会环绕在瓦片上。

使用我自制的 C#/Wind32 框架和 Direct2D 的 Vortice 包装器,我编写了这个简单的湍流效果:

public void OnRender(ID2D1DeviceContext g, float t) {
   using var turbulenceEffect = new Turbulence(g) {
      Offset = new Vector2(t, 0)
   };

   g.Clear(Colors.Black);
   g.DrawImage(turbulenceEffect);
}

然而,渲染器输出一个缓慢向右爬行的湍流图像,就好像湍流偏移确实是一个平移,这与我从上面引用的文档中理解的不同。

这可能是 D2D 包装器的错误吗?我对文档的理解不正确吗?如果不是,实现预期效果的正确方法是什么?


参考图片来源
Vortice.Direct2D1 2.4.2
.NET 目标框架:

net6.0-windows10.0.19041.0

c# .net direct2d
© www.soinside.com 2019 - 2024. All rights reserved.