使用 DirectX 11 插入背景颜色?
Interpolate background colors using DirectX 11?
我的任务是制作一个应用程序,其背景颜色应在 3 种随机颜色之间变化,创建闪烁效果并沿着正弦曲线在 3 种颜色之间平滑插值。
- -1 处的曲线位置 - window 背景为 100% 颜色 A;
- 0 处的曲线位置 - window 背景为 100% 颜色 B
- 曲线位置 1 - window 背景为 100% 颜色 C
- 其他曲线位置应在这些颜色之间平滑插值(例如:在 -0.5 背景颜色应为 50% 颜色 A 和 50% 颜色 B);
这个插值和颜色变化应该如何沿曲线实现?
我已经阅读了有关顶点着色器和像素着色器、效果的内容,并且为正弦曲线编写函数不是问题,只是现阶段不明白如何在代码中连接它们以在移动过程中实现这种效果曲线。
M...如果我明白你需要做什么,你只需使用 DirectX Lib 来显示颜色。
我相信你有一定的编码知识。
首先,你不需要着色器,关于 DirectX 的这项工作你需要的一切都可以在这里找到:DirectX 2D Tutorial
本教程向您展示如何使用 DirectX 绘制正方形,要使 DirectX 正常工作,您需要执行一些操作 pre-configuration 以锁定 GPU,但这在本教程中进行了说明。
但是根据我从您的问题中了解到的信息,您并不精通计算机图形学,因此您可能需要一些基本信息来完成本教程。
我想你需要一些关于图形坐标、世界坐标、相对坐标的教程。
过了这部分剩下的就很简单了,颜色的插值可以看作是向量插值(颜色是3维的向量RedBlueGeen,或者4维的Alpha通道),而你必须使用带有系统定时器的 sin 来产生闪烁效果:
color = interpolate(color1,color2, percentual)
percentual是percentual=sin(timer)的结果,timer可以从系统获取,但是要小心,因为DirectX会在可以的时候调用你写的draw函数,所以你有做一些计算来解决这个问题,并记住移动 sin 函数或交换颜色。
然后你需要做的最后一件事就是获取windows的维度,并用它来绘制一个与你程序的window一样大的正方形。
我的任务是制作一个应用程序,其背景颜色应在 3 种随机颜色之间变化,创建闪烁效果并沿着正弦曲线在 3 种颜色之间平滑插值。
- -1 处的曲线位置 - window 背景为 100% 颜色 A;
- 0 处的曲线位置 - window 背景为 100% 颜色 B
- 曲线位置 1 - window 背景为 100% 颜色 C
- 其他曲线位置应在这些颜色之间平滑插值(例如:在 -0.5 背景颜色应为 50% 颜色 A 和 50% 颜色 B);
这个插值和颜色变化应该如何沿曲线实现?
我已经阅读了有关顶点着色器和像素着色器、效果的内容,并且为正弦曲线编写函数不是问题,只是现阶段不明白如何在代码中连接它们以在移动过程中实现这种效果曲线。
M...如果我明白你需要做什么,你只需使用 DirectX Lib 来显示颜色。
我相信你有一定的编码知识。
首先,你不需要着色器,关于 DirectX 的这项工作你需要的一切都可以在这里找到:DirectX 2D Tutorial
本教程向您展示如何使用 DirectX 绘制正方形,要使 DirectX 正常工作,您需要执行一些操作 pre-configuration 以锁定 GPU,但这在本教程中进行了说明。
但是根据我从您的问题中了解到的信息,您并不精通计算机图形学,因此您可能需要一些基本信息来完成本教程。 我想你需要一些关于图形坐标、世界坐标、相对坐标的教程。
过了这部分剩下的就很简单了,颜色的插值可以看作是向量插值(颜色是3维的向量RedBlueGeen,或者4维的Alpha通道),而你必须使用带有系统定时器的 sin 来产生闪烁效果:
color = interpolate(color1,color2, percentual)
percentual是percentual=sin(timer)的结果,timer可以从系统获取,但是要小心,因为DirectX会在可以的时候调用你写的draw函数,所以你有做一些计算来解决这个问题,并记住移动 sin 函数或交换颜色。
然后你需要做的最后一件事就是获取windows的维度,并用它来绘制一个与你程序的window一样大的正方形。