使用 DirectX 11 插值背景颜色?

Interpolate background colors using DirectX 11?

本文关键字:颜色 背景 插值 DirectX 使用      更新时间:2023-10-16

我有一个任务是制作一个应用程序,其背景颜色应该在 3 种随机颜色之间变化,创建闪烁效果并沿正弦曲线在 3 种颜色之间平滑插值。

  • -1 处的曲线位置 - 窗口背景为 100% 颜色 A;
  • 曲线位置为 0 - 窗口背景为 100% 颜色 B
  • 曲线位置为 1 - 窗口背景为 100% 颜色 C
  • 其他曲线位置应在这些颜色之间平滑插值(例如:在-0.5时背景颜色应为50%颜色A和50%颜色B);

应该如何沿曲线实现这种插值和颜色变化?

我已经阅读了有关顶点和像素着色器,效果和为正弦曲线编写函数不是问题,只是在这个阶段不明白如何在代码中连接它们以使这种效果在沿曲线移动时可以实现。

M... 如果我了解你需要做什么,你只需要使用 DirectX Lib 来显示颜色。

我相信你有一些编码知识。

首先,你不需要着色器,关于 DirectX 的工作所需要的一切可以在这里找到:DirectX 2D 教程

本教程向您展示如何使用 DirectX 绘制正方形,要使 DirectX 正常工作,您需要进行一些预配置以锁定 GPU,但这在教程中进行了解释。

但是,对于我从您的问题中读到的内容,您不精通计算机图形学,因此您可能需要一些基本信息来学习本教程。 我认为您需要一些有关图形坐标,世界坐标,相对坐标的教程。

通过这部分,其余的就很简单了,颜色的插值可以看作是矢量插值(颜色是 3 维矢量 RedBlueGeen,或带有 Alpha 通道的 4 维),而您必须使用系统计时器的 sin 来生成闪烁效果:

color = interpolate(color1,color2, percentual)

百分是 percentual=sin(timer) 的结果,计时器可以从系统中获取,但你必须小心,因为 DirectX 会调用你编写的绘制函数,所以你必须做一些计算来平滑这个问题,并记住移动 sin 函数或交换颜色。

然后,您需要做的最后一件事是获取窗口的尺寸,并使用它来绘制一个大正方形作为程序的窗口。