使用 DirectX 11 插值背景颜色?
Interpolate background colors using DirectX 11?
我有一个任务是制作一个应用程序,其背景颜色应该在 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 函数或交换颜色。
然后,您需要做的最后一件事是获取窗口的尺寸,并使用它来绘制一个大正方形作为程序的窗口。
相关文章:
- 在特定时间内更改 QLabel 的背景颜色
- 更改包含 QButton 的 Qlayout 的背景颜色
- 如何为使用创建窗口创建的窗口创建自定义背景颜色
- 我正在尝试更改背景的颜色,但它不起作用
- MFC 更改 CListCtrl 背景颜色
- 如何仅设置 QTabWidget 背景颜色样式表
- 为什么不能使用 setData() 在 QTreeView 中设置单元格的背景颜色?
- 在另一个小部件中更改QWidget的背景颜色
- 同一图像中的反转文本和背景颜色
- 使用winapi使用按钮更改窗口的背景颜色
- 当在QTableView上丢失焦点时,失去背景颜色
- 当鼠标越过按钮时,我可以更改按钮背景颜色吗?
- 在加载页面时,如何为iwebbrowser2设置背景颜色
- 更改子分类Cstatic控制的背景颜色
- 使用 DirectX 11 插值背景颜色?
- 如何将控制台输出的文本颜色更改为红色,但如果从Powershell或CMD运行,背景将保持相同的颜色
- 10'000 行后控制台中的 C++ 背景颜色错误
- 如何设置按钮的背景颜色,包括复选框按钮
- 更改控制台应用的背景颜色C++
- 方法,允许我更改QwtPlot颜色背景